18/06/27 21:05:06.42 bK0Eiav/.net
>>89
>■注意事項
>「アセットを買えば」「チュートリアルやれ」等禁止、初心者の質問疑問に初心者が答えるスレ、ググれじゃなく何のキーワードでググったらいいかを書く
どこのどの部分に違反しているの?
ちょっと見てる人全員に分かるように詳しく説明してくれない?
94:名前は開発中のものです。
18/06/27 22:34:23.72 kjyTyUbj.net
EditorフォルダにBuildPipeline.BuildAssetBundlesのscriptをいれて
プレハブを選択してメニューからBuildAssetBundlesをしてアセットを作りました
UnityStudioから覗くとScene HierarchyはGameObjectだらけ(1つめの画像)
Asset ListのTexture2Dを選択しても何も表示されません。(2つめの画像)
何が問題なんでしょうか。
URLリンク(i.imgur.com)
URLリンク(i.imgur.com)
95:弟子
18/06/27 23:19:29.07 rsgWo6Ac.net
>>84
めげずに頑張ってください、私で分かる事であればお答えしますので
一応、スムーズにムーブするサンプルです(画像だけ)
ソース欲しいならど
96:っかにうpしますね ttps://imgur.com/a/xmOYSqk >>91 ここは素人だらけなので、すごく難しい質問ぽいですね、さくっとアセットバンドルのところを斜め読みしたのですが ビルドしたのを取り込んで使う場合ってAssetBundle.LoadAsset とかでロードするんでは? こちらのスレだと解決には厳しいかもしれません
97:名前は開発中のものです。
18/06/28 01:28:30.00 r9ZDJtDU.net
>>92
研究したいのでソース見たいです
よろしくお願いします
98:名前は開発中のものです。
18/06/28 06:22:42.46 /+kZ1wVw.net
スムーズに動かしたいならTransrateかAddforce使う。
物理挙動も取り入れるならAddforceで物理はどうしても取り入れたくないならTransrateと使い分ける。
サンプル丸コピじゃ成長しないし、少なくとも俺の解説よりは分かると思うから、少しはググるといいと思うよ。
99:名前は開発中のものです。
18/06/28 06:25:01.98 /+kZ1wVw.net
すまんスペル間違えてた。
TransrateじゃなくてTranslateな
100:弟子
18/06/28 12:00:33.21 /UzN8HYz.net
>>93
リファクタリングして短くなったのでSSであげますね
まぁまたケチ付けたい人が色々と文句ダケ言ってくるかもしれないけど気にせずに
まずは、ソース丸パクリでもどう動いているのか理解する事が重要で
その後に、少し修正してみて、例えば2つ先まで動くとかね
あと今は右、左の最大値は入れてないのでどこまでも行きます
そこは自分で最大値3以上は行かないという感じで修正してみてください
自分も最初は雑誌のBASICを打ち込んで覚えたので丸写しは有効な手段だと思います
URLリンク(i.gyazo.com)
URLリンク(i.gyazo.com)
変数の説明すると
dir 方向
limit 移動限界
移動後、X座標が少数になるのはdeltaTimeを掛けているからなので、まぁこの辺も移動にぴったしな整数にするという事も勉強になる修正かなと思います
101:名前は開発中のものです。
18/06/28 14:20:39.58 9SECcI4o.net
んじゃ、せっかくだからケチつけてみようかな。
サンプルなんだから分かりやすく書いたほうがいいよ
ってことで、v2posのスコープが広すぎる。Update関数内のローカル変数でいい。ってかv2pos.xしか使ってないんだからfloat pxにしとけばいいだろ。理解するのに30秒かかったわ。(変数生成負荷を嫌ったんだろうけど、見やすさは重要だと思うんだ)
てかlimitって名前が分かりにくい。x座標の目的地なんだからtargetXとかでいいんでね?30秒(略)
102:名前は開発中のものです。
18/06/28 14:28:13.80 9SECcI4o.net
ついでに、dirこそUpdate関数内ローカルでいい。
int dir=tfTriangle.position.x<limit?1:-1;
って書いとけばcheckrightのなかでdirをゼロにする必要もない。
103:弟子
18/06/28 14:29:20.15 /UzN8HYz.net
>>97
これ悪い例ね
pxにして直接potisionに代入できないから、たぶんこの人は作ったこと無くて覚え立てのスコープとか使ってわざわざ自分の才能のなさを書きにきてるのね
そんな時間あるなら自分流のサンプル作って出せばいいのに
104:名前は開発中のものです。
18/06/28 14:39:42.06 UPpeKgHO.net
つーかbasicからやってるような人間がリファクタリングして他人に見せる用として提示するコードがこれなの?
変数大文字から始めるわ、ハンガリアンつけるわでびっくりなんだけど
初学者のため思うならこそちゃんとしたコード見せてあげるべきなのに
105:名前は開発中のものです。
18/06/28 14:53:19.52 /+kZ1wVw.net
>>100
ハンガリアンもスネークも人それぞれだろ。初心者
106:スレでそんな細かいことで煽るなよ。 こういう記法がいいと思うってアドバイスだけでいいじゃん。 ちなみに俺はローワーキャメルが好きだ。 記法についてはここな。 ttps://www.google.co.jp/amp/s/earley.jp/blog/development/camelcase-hungariannotation-snakecase-programming/amp/
107:名前は開発中のものです。
18/06/28 14:56:43.12 UPpeKgHO.net
vector2.zero知ってるならrightやleftも使おうよ
なんすか、dir=1って
なんでv2pos.xに代入したあとcheck関数呼んでからv2posを代入してんの?
check関数でなにかしてるわけでもないならそいつらあとでいいよね?
check関数切り替えてるけど切り分け方がよくわからん
キー入力、移動先計算、移動方向判定、移動
移動方向判定だけなんで関数化したの?checkって名前もどうかと思うけど、まぁ命名はいいや
108:名前は開発中のものです。
18/06/28 14:57:38.47 /+kZ1wVw.net
ハンガリアンに否定的なサイトしか見つからなかったが、ハンガリアンにも間違ったコードが間違って見えるって長所があるからな
109:名前は開発中のものです。
18/06/28 14:59:54.67 UPpeKgHO.net
>>101
人それぞれだけどサンプルとして提示するならせめて公式に合わせるべきでは?
このコードを参考にしてください、って初心者に提示してるんだよ?
if使うんですか?ってレベルの初心者に
110:名前は開発中のものです。
18/06/28 15:01:01.11 UPpeKgHO.net
>>103
システムハンガリアンとかでググればハンガリアンの本来の意味を解説したとこ見つかるよ
間違ってもGameObjectだからgoってつけようなんて発想にはならん
111:名前は開発中のものです。
18/06/28 15:11:47.18 h3xp0Kjr.net
>>99
変数生成負荷とか言ってるんだからfloat型pxをxにしたnew Vector2を生成しろってことだろ
112:名前は開発中のものです。
18/06/28 15:17:43.19 K46AO26G.net
俺、駄目なハンガリアンの使い方してるわw
勉強になるなぁ
113:弟子
18/06/28 15:20:04.03 /UzN8HYz.net
大漁だなw
サンプル作れないけど文句しか言えない人がこんなに居るんだねー
一応ここは素人が素人に答えるスレなので、素人にも分かるようにみなさんもサンプル提示すればいいと思うよ
きっと頭いいから見やすくて分かりやすいサンプル提示してくれるんだろうなぁ
だよねー
まさか、文句だけ言ってプログラム書けないとかないよね?
114:名前は開発中のものです。
18/06/28 16:01:20.93 qauh58MA.net
上のサンプルで充分だろ。
揚げ足とってウダウダ言っても、質問者の為にならんぞ。ほんとケチだけは立派なんて頭悪すぎるから辞めなよ。
115:名前は開発中のものです。
18/06/28 16:07:14.65 /+kZ1wVw.net
>>108
俺のスパゲティーコードでいいならのせるぞ
116:弟子
18/06/28 16:07:56.12 /UzN8HYz.net
最後のサンプル
Unityという事でアニメにして動かしてみた
まぁこういう事も出来るという事で…
URLリンク(i.gyazo.com)
URLリンク(i.gyazo.com)
URLリンク(imgur.com)
つまり何が言いたいかというと、一つのやりたいことを行うのに沢山のやり方があって
そのどれをやってもいいしコードの書き方も色々とあるわけさ
まぁ仕事として他人と共同で作成とかになるとコード規約とか出てくるけど
まぁこんなとこでホビーとしてやる分には、まず動かしてみる事が一番大事
口だけで文句言うのが一番進歩もしないって事よ
117:弟子
18/06/28 16:11:42.18 /UzN8HYz.net
>>110
是非是非、他人のコードはいい勉強になりますので見て見たいです
自分では思ってもみない「気づき」が必ずあるので
>>111
public Transform trTriangle;
private void Awake()
{
trTriangle = GetComponent<Transform>();
}
これ使ってないので外すの忘れました^^;
118:名前は開発中のものです。
18/06/28 16:42:26.57 UPpeKgHO.net
111が初心者向けとしてのサンプルとしては
119:一番良いと思う なんでactiveの切り替えなんてトリッキーとも取れるような手法を一番に持ってきたんだろう animatorだと他の要素を加えるときに制約になる可能性があるから、別手法として96みたいにすることもできるって流れが普通だと思うけど
120:名前は開発中のものです。
18/06/28 17:06:10.17 /+kZ1wVw.net
とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
URLリンク(i.imgur.com)
121:名前は開発中のものです。
18/06/28 17:06:14.63 /+kZ1wVw.net
とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
URLリンク(i.imgur.com)
122:名前は開発中のものです。
18/06/28 17:07:01.22 /+kZ1wVw.net
うわ、連投すまん。
123:名前は開発中のものです。
18/06/28 17:17:38.71 UPpeKgHO.net
>>115
特に気になるとこ無い気がする
min maxは画面サイズが変更されたときに再計算すればいいじゃないとか思ったけど、この程度の処理気にするもんでも無いし
124:弟子
18/06/28 17:42:03.28 /UzN8HYz.net
>>115
GetAxis便利ですよねー
ただ今回の最初の要求って>>79なので上下いらないかなと思うのです
それと、位置移動なんですが、これって指定位置で止まるんでしょうか?
ちなみに自分はSerializeFieldの使い方知らないのですけど
TransformがPrivateなのですが、これってどこで指定するんでしょうか?
インスペクタじゃ出来ないですよね?
125:弟子
18/06/28 17:44:41.51 /UzN8HYz.net
あ、あとspeedもSerializeFieldになってますけど
ただこちらも初期値入ってないけど、もしかしてSerializeFieldにするとどっかで初期化されるというか
アタッチしたオブジェクトの何かを持ってきてくれるのでしょうか?
ちょっと自分にはわからない事が多いかもしれません><
126:名前は開発中のものです。
18/06/28 17:55:42.78 /+kZ1wVw.net
>>118
SerializeFieldはprivateでもインスペクタで値を設定できるようにする属性だよ。
publicにしたらどこから値が変えられるかわからないからprivateにしてるんだけど、それじゃインスペクタで参照できないからこの属性で強制的にシリアライズしてる。
127:名前は開発中のものです。
18/06/28 18:57:50.31 H6a6imyl.net
>>118
止まるというより2点で指定された長方形区画から外れると枠上に移動するようになってないか
128:弟子
18/06/28 19:22:46.38 /UzN8HYz.net
>>120
なるほど、これは便利な機能ですね!勉強ななりました!
ありがとう
129:名前は開発中のものです。
18/06/28 19:37:21.68 TZKnsOc7.net
>>106
俺が反論しようとしたポイント先取りするなよwww分かってくれてありがとう!
>>98のコードだと振動しちゃうので、そっち突っ込まれるかなと思ったけど、検討違いな突っ込みだったのでびっくりだよw
130:名前は開発中のものです。
18/06/28 21:57:18.70 cx/Kc4dr.net
>>79
int[] x=new int[]{-8,-4,0,4,8};
int sw;int dir;int n=2;float nextX;
void Start(){transform.position=new Vector2(x[n],0);}
void Update () {
if(sw==0){
if(Input.GetKeyDown(KeyCode.A)&&n>0){sw=1;dir=-1;n=n-1;nextX=x[n];}
if(Input.GetKeyDown(KeyCode.D)&&n<4){sw=1;dir=1;n=n+1;nextX=x[n];}
}
if(sw==1){
transform.Translate(new Vector2(0.1f*dir,0));
if(dir==1&&transform.position.x>nextX){sw=0;transform.position=new Vector2(nextX,0);}
if(dir==-1&&transform.position.x<nextX){sw=0;transform.position=new Vector2(nextX,0);}
}
}
131:名前は開発中のものです。
18/06/28 22:00:25.96 cx/Kc4dr.net
floatにする必要なかったな
132:名前は開発中のものです。
18/06/28 23:02:09.99 pfPaTp9f.net
>122 弟子 ◆rZPPjYuxmQ 2018/06/28(木) 19:22:46.38ID:/UzN8HYz
なんでコイツ質問スレ乱立してんの?
【ゲームエンジン】Unityなんでも質問スレpart1
1 名前:名前は開発中のものです。 2018/06/28(木) 15:25:16.78 ID:/UzN8HYz
133:弟子
18/06/28 23:40:04.36 /UzN8HYz.net
>>126
そっちのスレはなんでもありのスレ
ここは素人が答えるスレで注意事項がある
それぐらい読めるでしよ?
134:名前は開発中のものです。
18/06/29 01:26:58.57 AOmIYWRR.net
>>127
そういうのを荒し行為、迷惑行為って言うんだよ
学習しなよ
「スレを立てる時は同じような話題のスレを乱立させないでください」という5ch利用の基本注意書きがある
それくらい読めるでしょ?
135:名前は開発中のものです。
18/06/29 01:29:50.68 AOmIYWRR.net
この3人完全に荒しだな
菩薩@太子
弟子 ◆rZPPjYuxmQ
ダーク王鍬大使 ◆SoVpkB15jY
マジ迷惑すぎる
136:名前は開発中のものです。
18/06/29 04:22:03.78 H1gqcYbG.net
ここは初心者が困惑するスレですか?
137:名前は開発中のものです。
18/06/29 04:44:21.40 B66gImoO.net
自分より初心者の奴にマウントを取りたいが為に「弟子」が立てた初心者専用スレ。
残念ながらマウントをとられてしまったので、そいつらを追い出すために再び別の質問スレを立てる。
以後、糞コテ「弟子」の隔離スレとなった。
138:名前は開発中のものです。
18/06/29 10:15:45.99 KJpjNVGQ.net
質問に答えてくれるスレなら何でもいいんだが
139:名前は開発中のものです。
18/07/03 09:46:10.78 AtrhXQ0j.net
adsでインプレッションが150くらいで$15ってついてたけどそんなけ儲けが出たという事ですか?
140:名前は開発中のものです。
18/07/03 18:42:33.52 DgOGkLki.net
Taitleオブジェクト(TXT表示だけ)が表示中は
敵オブジェクトが弾を発射しない様に改造しているのですが
Enemyにアセットしたcsの、弾を撃つ命令を
if文で、「Taitleオブジェクトが非表示なら弾を撃つ」とすればいいだけだと
思ったのですが、うまくいきません。
Enemy.csの弾の命令は
while (true)
{
// 子要素を全て取得する
for (int i = 0; i < transform.childCount; i++)
{
Transform shotPosition = transform.GetChild(i);
// ShotPositionの位置/角度で弾を撃つ
spaceship.Shot(shotPosition);
}
// shotDelay秒待つ
yield return new WaitForSeconds(spaceship.shotDelay);
}
なんですが、
141:名前は開発中のものです。
18/07/03 18:43:10.13 DgOGkLki.net
で、>>134を
while (true)
{
// 子要素を全て取得する
for (int i = 0; i < transform.childCount; i++)
{
Transform shotPosition = transform.GetChild(i);
if(title.activeSelf == false){
// ShotPositionの位置/角度で弾を撃つ
spaceship.Shot(shotPosition);
}
}
// shotDelay秒待つ
yield return new WaitForSeconds(spaceship.shotDelay);
}
と書き加えました。
もちろん、
// タイトルオブジェクトを取得
private GameObject title;
// Titleゲームオブジェクトを検索し取得する
title = GameObject.Find("Title");
をクラス内に記載もしました。
そしたら、敵がゲーム中も一切弾を撃たなくなりました。
エラー文は
NullReferenceException: Object reference not set to an instance of an object
Enemy+<Start>c__Iterator0.MoveNext () (at Assets/Scripts/Enemy.cs:46)
UnityEngine.SetupCoroutine.InvokeMoveNext (IEnumerator enumerator, IntPtr returnValueAddress)
(at /Users/builduser/buildslave/unity/build/Runtime/Export/Coroutines.cs:17)
です。
142:名前は開発中のものです。
18/07/03 18:43:25.91 DgOGkLki.net
なにが間違っていますか?
教えてください。
143:名前は開発中のものです。
18/07/03 19:01:59.41 L0TgVbu0.net
>>136
死ねガイジ
144:名前は開発中のものです。
18/07/03 19:58:29.00 bkI+tY6O.net
エラー出てるのどの行?
145:名前は開発中のものです。
18/07/03 20:02:44.63 m6+Emxdh.net
titleはちゃんとfindできてるのか?
146:名前は開発中のものです。
18/07/03 20:16:20.25 BqokYmSM.net
gameobject.findって非アクティブも検索するんだったっけ?
147:名前は開発中のものです。
18/07/03 21:28:51.32 Oy6MCkRt.net
しない
148:弟子
18/07/03 22:33:56.89 wgFi8W22.net
>>134
このコードって恐らく公式の
URLリンク(unity3d.com)
149:enemies のコードでしょうか? だとすると 「弾を撃つ必要がない時はyield break;を使用してコルーチンを終了させます。」 という具合に書いてるので、これを利用するとですね // canShotがfalseの場合、ここでコルーチンを終了させる if (spaceship.canShot == false) { yield break; } となってるので、Titleが非表示の時はbreakするようにすればいいのかなぁと思います
150:名前は開発中のものです。
18/07/03 22:52:21.52 L1TMFUeX.net
すみません
URLリンク(assetstore.unity.com)
のアセット使ってトグルボタンぽちぽちしたいのですが、ボタンが動きません
どう使えばいいのでしょうか?
151:名前は開発中のものです。
18/07/04 00:28:49.31 RvZnsCPI.net
>>139
" title = GameObject.Find("Title"); "
を記載しているので、できていると思っているのですが、
NULLが来てます的な警告の先がこの場所みたいなので
Findがうまくいっていないかもしれません。
しかし、
private GameObject title;
title = GameObject.Find("Title");
と、たったこれだけで他所のゲームオブジェクトをFindできるんですよね?
それ以外にしなければならないことありますか?
>>142
そうです。弟子◆rZPPjYuxmQさんのアドバイス通り、
// canShotがfalseの場合、ここでコルーチンを終了させる
if (spaceship.canShot == false){yield break;}
if (title.activeSelf == True){yield break;}
と連続で記載してみました。
が、症状は同じで、まったく弾を撃たなくなってしまいました。
152:名前は開発中のものです。
18/07/04 00:31:36.06 RvZnsCPI.net
>>138
>>139
NullReferenceException: Object reference not set to an instance of an object
Enemy+<Start>c__Iterator0.MoveNext () (at Assets/Scripts/Enemy.cs:36)
この警告先は
" if (title.activeSelf == true){ ”
この部分みたいです。
153:名前は開発中のものです。
18/07/04 00:33:02.65 RvZnsCPI.net
ちなみに、エネミーを倒したあとに、警告が出ます。
エネミーを倒すたびに警告が出る状態です。
154:名前は開発中のものです。
18/07/04 01:55:12.03 W/Y7Ww/v.net
/i/|ii!//|!/!i/´i/ .|i |/ノ i\i!゙、:iヽ|:::| ヽ 'i ! ヾi |'!ヽ::::||::::::/:::::::::::::::::::::ヽ
i i 川i!ハ/" _! | │ 川 ヾ:ii ゙'∨ | ゙ヾiヽヽ;||:::::i':::::::::::::::::::::::::
ノ ノ/リ,,,,,,二三テ=''" ヽノ ル |ノノヽヾ ノ 、,,,ノ,、 iヽ:::||:::::i'::::::::::::::::::::::::::::
/  ̄ ´~~゙'''' ゙''‐- ..,, ,, ‐' `゙ヾミッ、,, ヽ::|::::/::::::::::::::::::::::::::::
,,イ| i' i" `'‐=' `'|/i!:::::i::::::::::::::::::::::::
i | :::::::ヽ::::ヽ::::::ヾ:: ゙、 l 〃::::: i//::::ハ::::::::::::::::::i:::
i i \\\\\ヽ ) ヽ ′′′ / /:::::/:::::::::::::::::::|::::
! | i ,,ィノ < :::: : /:::::/:::::::::::::::::::/::::
i! i i! /i/ ,r''''‐y'''.;、 \ /:::::/:::::/::::::::::::/:::::
゙i! | i /⌒' 、 Y:::::::::''::;;;;'.;.Y'⌒゙i /::::::/::::::/::::::::::::/::::/i
i i ゙! ん、,,__ヽノ:::::::::::::::::::;;;;;{,__,,,r'' /:::::::/::::::/::::::::::::/:::://
゙、ii! ゙| i ノ ゝ;;;:::::::::::::::::::;ノ 。 `i //:::::/:::::/::::::::::::/::::::/:::
ヾ!トl ゙i¦ i 。l '゛.. ‐ー:::::i | //::::::/::::::/::::::/:::/:::::i!::::::
iiミ! ハ i l ,,,,::: :::;;;;;...{ ° ゙、 //::::://::::/::::::/:::::/::::i::::ii::
i!ヾ!i ゙、! , ' |::: ::::ヽ ..} |゙ヽ......,.,.,.,,,///://::://::::/::::://::::i::::リ::
!ヽヾi i゙、 ___,,,/ }:: : ;;;::: ::::::::} レWノ'レi/、//::/:://:/:::/::/:::ハ:i |::
155:名前は開発中のものです。
18/07/04 06:27:05.10 PcbSJbIy.net
>>145
titleの中がぬるぽなんじゃ。
取得はどこだ?titleが居るってかactiveの時に取ってる?じゃないとfindで取れないぞ。
156:名前は開発中のものです。
18/07/04 07:46:44.11 TALB3D9+.net
titleオブジェクトの名前がTitleじゃない(誤記)
Titleを非表示でなくdestroyしている
title取得以前に弾を撃とうとしている又は何度も取得しようとしている
非表示以降に生成されるenemyがある
多分このどれか
>>146見るとenemyが複数回生成されるみたいだから少なくとも最後は引っかかる
157:名前は開発中のものです。
18/07/04 10:55:01.63 GdNJLKay.net
参考にしてみるといいURLリンク(goo.gl)
158:弟子
18/07/04 11:01:38.37 +Bj9nh1d.net
>>144
>>145
さてでは問題は他でも指摘されているように「Title」オブジェクトがちゃんと指定されているか?
という事で、これの一番簡単な解決は
「public Text Title」 ←これをインスペクタで指定してあげる
(Textを使う場合、Using Unity Engine.UIを指定する)
そうすれば「Start」関数で「title = GameObject.Find("Title"); 」は必要なくなります
恐らく、Findが失敗しているからNullエラーとなているのかと思われますが
Findが成功しているかどうか簡単に見るにはFindの後に「print(title.name)」でもしてみると解ります
159:弟子
18/07/04 11:06:38.82 +Bj9nh1d.net
>>143
有料アセットなので試せないのでなんとも・・・
恐らく記載のバージョンでやってみて動けば、現在の143さんのバージョン違いによる事じゃないかなとしか
160:名前は開発中のものです。
18/07/04 16:35:34.35 RvZnsCPI.net
>>148
>>149
>>151
destroyしていないですし、
Using Unity Engine.UI無しでも取得できてる箇所もあるのでよくわからず、、
初心者のためか、どうしてもわかりません。
現在のゲームの一式Zipです、Unityで開いていただければ覗けると思います
8Mしか無い小さなファイルですので確認して頂いてよろしいでしょうか?
素材は公式チュートリアルのもので、ソースは2017に合わせて変更しています
URLリンク(ux.getuploader.com)
スクリプトフォルダのEnemy.csファイルを確認してほしいです。
コメントで消してます部分がやりたいことです。
なにが間違っているのか、ご指摘頂ければ幸いです。 👀
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
161:名前は開発中のものです。
18/07/04 17:28:56.01 30JL9X4X.net
>>153
見たけど>>149の後半そのままじゃないか、確認してくれよ……
1) プレイヤーの操作でTitleオブジェクトがactiveでなくなる
2) enemyが生成されtitleに代入しようとするもactiveでないオブジェクトはFindで引っかからず空のまま
3) titleの中身がnullの状態で静的でない変数を呼び出したのでNullReferenceExceptionで止まる
162:名前は開発中のものです。
18/07/04 17:33:31.63 s79xjkx+.net
GameObject.Findはactiveじゃないと使えないんだって
Transform.Findなら使えるかな
163:名前は開発中のものです。
18/07/04 18:00:16.94 RvZnsCPI.net
>>154
確認していただき、ありがとうございます。
>Titleオブジェクトがactiveでなくなる
認識不足でした、、そもそもactiveでなくなる、というのは
どういう状態のことですか?
自分はtitle.activeSelfの真偽はtitleの中のひとつのbool変数で
画像(テキスト)の表示非表示のスイッチみたいなものかと
思っていました。。。
title.activeSelf==falseだと、activeでなくなっている
という認識なんですね?
でも、プレイヤーが死亡したあとタイトル文字が出ますよね?
その状態はtitle.activeSelf==tureになって、
activeである状態ではないのでしょうか?
タイトル文字が出ても、敵が残っていると
そいつは前に進んでいます。
その時に、弾を吐かない様にしたかったので
コメントアウトしてるソースを記載しようと思ったんですが。。
自分の認識違いがなんなのか
正してもらえませんでしょうか
164:名前は開発中のものです。
18/07/04 18:09:32.59 RvZnsCPI.net
調べてみると
GameObjectのactiveSelfは
ゲームオブジェクトのローカルのアクティブ状態(読み取り専用)
画像の非表示はそのオブジェクト自体の動作を
停止させて非表示にしているのですね、、
しかし、やはり、プレイヤー死亡後は
そのTitleオブジェクトは動き出してるはずで、、
ああ、もしかして、タイトル画面が表示されていて
敵が流れていても、その時にはすでにstart()を通らないから
title = GameObject.Find("Title");ができない状態だから?
165:弟子
18/07/04 18:21:48.52 +Bj9nh1d.net
>>153
ソース見ました
弾を打つ処理って無限ループの中で行っているのですね
なのでループの中に撃たない処理をいれないとダメですね
それと「Manager.cs」で既に title = GameObject.Find("Title");されていて成功しているので
他で使う場合は、まず宣言で
// タイトル
public static GameObject title;
の様に「public」な「static」の変数にします
で「Enemy.cs」の無限ループ中で
while (true)
{
// 子要素を全て取得する
for (int i = 0; i < transform.childCount; i++)
{
Transform shotPosition = transform.GetChild(i);
//弾を撃たせる
//ShotPositionの位置/角度で弾を撃つ
if (Manager.title.activeSelf == false) spaceship.Shot(shotPosition);
}
// shotDelay秒待つ
yield return new WaitForSeconds(spaceship.shotDelay);
}
これで行けるかと思います
一応、インスペクタでタイトルを操作した画面です
URLリンク(imgur.com)
166:名前は開発中のものです。
18/07/05 04:52:10.53 Gem47u68.net
>>158
ありがとうございます!
あの、質問なんですが今回はManager.csはメインスクリプトかと思うんですが、
要は、メインスクリプト内で取得した各オブジェクトの情報は、
そのほかのスクリプトや各オブジェクトにアセットしたスクリプト内において
public static GameObject 変数名;と記載したあと
以後スクリプト名.変数名で呼び出すことができるようになるのですか??
そして>>158の内容からですと、自分は今回他のスクリプト内で使用する記述方法を
間違っていた(public static GameObjectなど)ということで、
>>154さんや>>155さんの指摘である「activeじゃないから」云々は
今回は当てはまらない、ということですか?
167:名前は開発中のものです。
18/07/05 06:55:42.38 w7MLipmi.net
findするタイミングを考えろ
タイトルでる
消える
敵出現
find
敵消える
敵につけたスクリプトだとfindできるタイミングがないんだよ
findするにはスタート時から消えないオブジェクトにスクリプトをつける必要がある
168:弟子
18/07/05 11:09:32.51 9fzjzEJn.net
>>159
>要は、メインスクリプト内で取得した各オブジェクトの情報は、
>そのほかのスクリプトや各オブジェクトにアセットしたスクリプト内において
>public static GameObject 変数名;と記載したあと
他のスクリプトで変数を使う場合には「public static」にするだけですね
>以後スクリプト名.変数名で呼び出すことができるようになるのですか??
呼び出すというか、使えるという感じでしょうか
A.csで定義した変数henをB.csやC.csでも上記の様に宣言すれば使えるけど、それぞれが呼び出して別の変数としてではなく、あくまでA.csのhenであり、B.csでhenに1を入れ、次にC.csでhenに3を入れた場合、次に参照する際には3となってます。
プロジェクトでユニークになってると思います。ですので、あれ、どこでこの数値いじったかな?とかいう事が起きるのでご注意ください。
>>>154さんや>>155さんの指摘である「activeじゃないから」云々は
>今回は当てはまらない、ということですか?
うーん、すいません154さんや155さんのところ読んでないのでこれについてはよくわかりません、申し訳ないです
また何かあれば気軽に質問してください、私で分かる範囲でお答えさせていただきます
お互い頑張って作品作っていきましょう!
169:名前は開発中のものです。
18/07/05 12:38:02.09 MRR7aszu.net
>>159
いや、直接的には「activeじゃないから取得できない」で合ってる
現状だとenemyが生成されるたびに各個にtitleを取得しようとするから生成のタイミングでtitleが非activeだと取得に失敗してしまう
その解決法として「ゲーム開始直後、activeなうちに一回取得・staticな変数に入れて全てのenemyで使い回せ」というのがこのコテの提案
170:名前は開発中のものです。
18/07/05 13:06:01.71 30R4+BKt.net
�
171:沚�るときは、敵マネージャー.csを作って、敵生成は全てそこでやるといいよ。
172:名前は開発中のものです。
18/07/06 08:47:46.43 bTnJUGNr.net
PG初心者になります。
C#で、下記のように".psd"の拡張子を指定したいのですが、
大文字、小文字を区別せず指定する場合はどのようにしたらよいでしょうか。
".psd"".PSD"".pSd"でも問題ないようにしたいです。
ご教授お願いいたします。
/// ファイル拡張子【psd】
public const string ExtensionPSD = ".psd";
173:名前は開発中のものです。
18/07/06 09:06:37.75 SbZqPch/.net
>>164
Unity関係ない気がしなくもないが、自力でやるなら文字を一旦すべて小文字化してから比較すればええんやで
174:名前は開発中のものです。
18/07/06 09:21:09.69 mqKRW7N6.net
指定時じゃなくて比較時に大文字小文字区別なしでString.compare()やったら?
どうしてもって言うならStringじゃなくてregexでやるか。
175:名前は開発中のものです。
18/07/06 09:38:00.97 diIi72QZ.net
>>165
>>166
ご指導ありがとうございます。
下記で取得したものを
------------------------------
private void GetSceneTreeObjByFiles( ref List<SceneTreeObj> listParent, string downloadPath )
{
var path = FTP.CommonWord.GetDownloadPathByPlatform( downloadPath );
{
var files = GetFilesFromExtension( path, FTP.CommonWord.ExtensionPSD );
RegisterFiles( ref listParent, files, path, (Texture2D)Resources.Load( "button_com_file_shadow" ) );
files = GetFilesFromExtension( path, FTP.CommonWord.ExtensionJPG );
RegisterFiles( ref listParent, files, path, (Texture2D)Resources.Load( "button_com_file_shadow" ) );
}
}
------------------------------
こちらで条件付けしているのですが、
------------------------------
/// ファイル拡張子【psd】
public const string ExtensionPSD = ".psd";
------------------------------
この場言、"downloadPath"を小文字化するのですが、どのように書けばよいのでしょうか。
急遽直さなければならず、ご教授いただければ幸いです。
176:名前は開発中のものです。
18/07/06 09:49:28.52 JxKSLFmq.net
>>167
ふらっと C#,C♯,C#(初心者用) Part138
スレリンク(tech板)
177:名前は開発中のものです。
18/07/06 09:55:13.52 mqKRW7N6.net
>>167
試してないけど
downladpatth.ToLowre()でならないかしら
178:名前は開発中のものです。
18/07/06 09:59:22.23 mqKRW7N6.net
>>169
入力ミス
downladPath.ToLowre()
ね。
179:弟子
18/07/06 10:24:48.79 PYnnNWaZ.net
ToLower()
URLリンク(msdn.microsoft.com)(v=vs.110).aspx
180:名前は開発中のものです。
18/07/06 11:01:26.39 ziEtrYYq.net
文字列 小文字 C#
でググれば一発
知識が少なくてC#なのかUnityなのかわかんなくても結果は同じ
181:名前は開発中のものです。
18/07/06 20:37:16.86 TxoEW2Q0.net
>>弟子 ◆rZPPjYuxmQ
すみません、>>158ができませんでした。
宣言したあと、
「Manager.title.activeSelf」では
下線のエラーが出てしまいます。
URLリンク(dl1.getuploader.com)
確かに考えてみると、
public static GameObject title;の宣言から
使用時にManager.titleでは繋がらない気がしますが、
宣言場所が問題なんでしょうか?
182:>>34
18/07/06 20:50:18.52 gEW+Hr/Q.net
Manager.title の青文字、Managerはいらないよ
183:名前は開発中のものです。
18/07/06 20:52:15.36 gEW+Hr/Q.net
if(Manager.title.activeSelf == false)
じゃなくて
if(title.activeSelf == false)
ね。
184:名前は開発中のものです。
18/07/06 20:59:50.58 TxoEW2Q0.net
>>175
ありがとうございます。
そう思って、自分も「Manager.」を削ってみたんです。
そしたらちゃんと動くんですが、
敵が弾を一切撃たないままでして、、、
185:名前は開発中のものです。
18/07/06 21:00:36.73 TxoEW2Q0.net
やはり、NULLが返ってきてるんです。。
んー
186:名前は開発中のものです。
18/07/06 21:17:26.03 VvyEnY8t.net
そのスクリプトを
187:アタッチしたゲームオブジェクトは、もしかして複数ないだろうね?
188:名前は開発中のものです。
18/07/06 21:23:04.84 HglSf1KI.net
static書く場所間違えてんぞ
宣言すんのはManager.csの中だ
189:名前は開発中のものです。
18/07/06 21:31:14.20 HglSf1KI.net
Enemy.csの中にはFindがないだろ
Maneger.csの中にFindがあるからそれを使わせてもらうってことだ
ちゃんと理解しろ
190:名前は開発中のものです。
18/07/06 21:43:49.49 gEW+Hr/Q.net
このEnemy.csが付いているオブジェクトにSpaceshipコンポーネントも付いてんの?
24行目の
Spaceship = GetComponent<Spaceship>();
が気になったんだけど。
Enemy.csをつけてるオブジェクトのinspecter画像あげてみなよ。
191:名前は開発中のものです。
18/07/06 21:43:58.07 tJg4NY0i.net
なんだ!その言い方は。自分で作ったこともないクセに生意気なことを言うなよ!
192:名前は開発中のものです。
18/07/06 21:54:18.65 gEW+Hr/Q.net
>>176
あ、前にソースあがってますね。みてきます。
193:名前は開発中のものです。
18/07/06 22:31:47.47 3k4W8n5C.net
whileのところ。titleの取得はここじゃなきゃ意味ない。
URLリンク(i.imgur.com)
194:名前は開発中のものです。
18/07/06 23:02:04.45 3k4W8n5C.net
>>183 =>>184です。
whileの中の
if (spaceship.canShot)
 {
 spaceship.Shot(shotPosition);
 }
のまえに
GameObject title = GameObject.Find("Title");
 if (title)
 {
 spaceship.canShot = false;
 }
を付け足すと一応なるよ。
でもこのプロジェクト、初心者にはむりだろ。なんでupdate()じゃなくて無理矢理while
使ってんだろ。
195:名前は開発中のものです。
18/07/06 23:03:44.11 3k4W8n5C.net
>>185
な、改行が、、
196:名前は開発中のものです。
18/07/06 23:10:51.46 HglSf1KI.net
おいおい
もう正解でてるのに違うこと書いて混乱させるなよ
197:弟子
18/07/07 02:22:02.54 K1LNb5pO.net
>>173
ごめんね、分かり易いように全ソース上げるべきだったかな
とりあえずSSです
URLリンク(i.gyazo.com)
あと前回からも分かるように名無しさんはソース見て無かったり、とんちんかんな答も多いので間にうけないでね
198:名前は開発中のものです。
18/07/07 03:30:48.40 mRGE11IO.net
まず、レスをくださった名無しの皆さま、
ありがとうございました。勉強になりました。
>>弟子 ◆rZPPjYuxmQさん
ソースをあげるお手間を取らせて申し訳ありません。
おかげで自分の間違いも理解でき、無事ゲームも動きました。
ありがとうございます。
それと今回はとても勉強になりました、
Unityゲーム制作方法がまたひとつ理解出来たことを実感できました。
投げることなく、これからも頑張っていきたいのでまたお時間がある時は
どうぞよろしくお願い致します。
>>185
>でもこのプロジェクト、初心者にはむりだろ。
>なんでupdate()じゃなくて無理矢理while使ってんだろ。
考えてみると、確かにそうでした。
start()にはSpaceshipコンポーネント取得だけを記述し、
update()を作り、そこに移動とショットのメソッドを記述するのが
よくみるソースですよね、、気になるので
ちょっと自分でそうしてみます。
199:弟子
18/07/07 09:24:11.16 K1LNb5pO.net
>>189
その修正は今後の力になりますね
while(true)の形式は昔のゲームでよく見ますね
何にせよ途中で投げ出さない事が力になると思います
200:名前は開発中のものです。
18/07/07 11:12:48.46 EkXNa58T.net
>>169
167です。
遅くなりましたが、ご連絡いただきましたカタチで対応したところ上手くいきました。
ご指導ありがとうございました!
201:名前は開発中のものです。
18/07/07 12:04:39.34 uvTZMuyK.net
C言語とかどこから勉強すればいいのか
全くわからん
パーツ組み合わせて勝手に作ってくれるツールとかないんかな
202:名前は開発中のものです。
18/07/07 14:56:25.98 ZcP3i1gQ.net
>>192
なに、Unityスレで蟹飯やらUPEの話をしたいとな?
203:名前は開発中のものです。
18/07/07 15:15:03.55 oT3GXRo8.net
>>192
アセットを探しましょう!
有料アセットにはいいものがいっぱいですから!
204:名前は開発中のものです。
18/07/07 15:21:59.58 VmA3Nk3U.net
プログラミングで混乱してる奴はスクリプト間の動きを知ったほうがいい。
シングルスレッドだけで良い。その先の技術はまだまだ後回し。
まずは、この図を頭に叩き込んで見てくれ。
URLリンク(docs.unity3d.com)
205:弟子
18/07/07 15:27:51.44 K1LNb5pO.net
>>192
別に勉強することなんかない
やりたいことが決まってれば、それを行うための方法をgglなりここで聞けばいい
やりたいことが決まってないなら簡単な事、例えば四角を表示して墜ちてくる、次にA,Dで左右に動かすなんかやればいいと思う
その次はぶつかった時の処理やミサイル発射とか、一つできたら次に広げていけば自然と身につく
206:名前は開発中のものです。
18/07/07 16:25:52.52 BIKvv2AG.net
>>196
何も出来ない人は質問に答えないで下さい。迷惑です
207:名前は開発中のものです。
18/07/07 19:47:47.40 zm6PvQJ6.net
よりによって196w
208:名前は開発中のものです。
18/07/07 20:26:34.78 Iv6KIDqQ.net
>>193
今時蟹飯なんていってわかる奴いるのかよ。
209:名前は開発中のものです。
18/07/07 21:33:06.60 G1vtLFdf.net
コーディングで白背景は目が痛いな。
210:名前は開発中のものです。
18/07/08 03:35:46.42 /vo2AcUq.net
>>195
シングルスレッドってそのページの
スクリプトライフサイクルフローチャートって奴ですよね?
項目が多すぎて、しかも知らないものばかりで
わけがわかりません。もう少しシンプル化できませんか?
211:名前は開発中のものです。
18/07/08 08:32:44.77 +e8vKp03.net
>>200
え、まじ?統合環境使いだしてからずっと白背景だな。
たしかにCビルダー使いだす前は、黒背景にしてたかもしれん。
212:名前は開発中のものです。
18/07/08 11:25:39.56 XHY+bU4w.net
>>201
う、マジか、この図で分からなければ、中々キツイぞ。
まとめては俺は必要無かったんで良いリンクとかは、他の賢人に任すわ
少しだけ概要な
シングルスレッド云々は、unityは元々シングルスレッド志向のmonobehaviorの動きで動いてるってこった。
そしてその動きがこの図な
んで、この図の
awake~start迄が最初の1ターンだけ発行
んて、fixed update~yield waitfor fixed update迄が、固定秒数毎に毎ターン
update~late update迄がベストエフォート秒毎の毎ターン
それ以降のは、素人としては難しいんで、覚える必要無し
て所か、ターンて書いたのは分かり易くする為な。
本当は適切な言葉あるんでそれは調べてね。
213:名前は開発中のものです。
18/07/08 11:31:56.95 XHY+bU4w.net
言い忘れたが、重要なのは
これらの動きが、全ゲームオブジェクトに貼り付けられたスクリプト(monobehavior)で一斉に並列(あくまでシングルスレッドの分割)で動作するって所な
まあ、がんがれ
214:名前は開発中のものです。
18/07/08 12:32:40.48 qKbg52AD.net
これが読めないってのは…
あぁ、初心者スレかそういうレベルの初心者も居るか。
215:名前は開発中のものです。
18/07/09 19:21:15.90 tGtIqOna.net
unityで球と直線の交点を求めるにはどうすればいいですか?
216:名前は開発中のものです。
18/07/09 19:39:45.22 E1xkTZ4l.net
一番楽なのはRaycast
それ以外は直線と円の交点を求める式で検索
217:名前は開発中のものです。
18/07/09 20:12:59.49 tGtIqOna.net
ありがとう
218:265
18/07/09 21:30:47.56 CkgNFaVi.net
>>206
アセットを買えば良いと思います!
219:名前は開発中のものです。
18/07/09 23:17:42.75 Ip18eAqk.net
質問です。
キーボード入力のGetAxisを使ってプレイヤーを動かすタイプのPCゲームを作っていて、
マウスでも入力が可能にしようと思い、仮想ジョイパット等の記事を参考にしてみたのですが
肝心のキーボード入力とマウス入力との入力加速度等のすり合わせがうまくいきません。
1.(マウスをクリック等すると)キーボードの矢印キーを押したことになるスクリプトはありますか?
(自分でも探してみたのですがキーの代入のようなものを見つけられませんでした)
2.もしくは、GetAxisの入力が0から1.0fになるまでの時間と加速度の式はどこかで見れますか?
(それが分かればマウスでの入力もGetAxisと同じ挙動にできると思います)
220:名前は開発中のものです。
18/07/10 00:02:19.44 DExfR9FT.net
edit>projectSetting>inputは出せるか?
そこでsizeを一個増やして、nameに好きな文字入れてボタン作ってくれ
んで、positive buttonにleftかrightかupかdownか押したことにしたい方向いれてくれ。
んで、alt positive buttonに「mouse 0」って入れてくれ
Input.GetAxis("つけた名前")で、マウスか矢印おした時にaxis値が取れるかと思う。
0から1になる増加値らへんはここみてくれえ
URLリンク(qiita.com)
221:名前は開発中のものです。
18/07/10 04:25:28.04 I4DvWkaD.net
迅速な回答ありがとうございます!
しかし、私の質問が悪かったのですが、私が試していたのは下記のタイプでして、(丸きり同じ仕様ではありませんが)
URLリンク(kan-kikuchi.hatenablog.com)
inputそのものを増やす方法で対応できるのかやや困惑気味ですが少し色々試してみます。
ありがとうございました。
222:名前は開発中のものです。
18/07/11 23:57:57.02 o/82KR0c.net
UnityでWindowsMR用のプログラムをつくってるのですが、
ハンドコントローラのボタン操作でテレポート(ワープ)しないようにするにはどうすればいいですか?
MixedRealityToolkit->ConfigureででてくるApplyを3つとも適用した状態です
223:弟子
18/07/12 22:20:09.55 duOHPzc3.net
難しそうな質問ですねぇここは初心者用なので答えが出ないかもしれませんが
とりあえずggったのですが、きっともう読まれているのですかねぇ…
URLリンク(tks-yoshinaga.hatenablog.com)
URLリンク(framesynthesis.jp)
URLリンク(sirohood.exp.jp)
224:名前は開発中のものです。
18/07/14 15:39:12.44 9sFMmlen.net
uGUIについて質問です
Canvas->空のGameObject->複数のテキスト
という構造で複数のテキストを表示しているのですが
たまにすべてのテキストが空のGameObjectの座標に集まってしまい、レイアウトが崩れてしまいます
その都度手動で元のレイアウトに戻すのが面倒なので、レイアウトが崩れない対策があれば教えてください
225:名前は開発中のものです。
18/07/14 20:52:46.97 trAsPRCC.net
>>215
アセットストアで検索してみて
226:はどうでしょうか?
227:弟子
18/07/15 09:52:55.71 +fIs9TbR.net
>>215
テキストの親のobjectにAddComponentでLayoutにあるLayoutGroupを追加してみてください
↓同じテキストの位置
URLリンク(i.gyazo.com)
↓layoutをオンすると自動で整列
URLリンク(i.gyazo.com)
これはVerticalLayoutということで縦に自動で整列します
他にもいろいろあるのでご自分の要望にあったのを取り入れれば良いかと思います
228:名前は開発中のものです。
18/07/15 10:07:37.36 7ZKErhFA.net
>>215
たまにそうなるのは根本的に何かが間違っている
原因究明が大事
229:名前は開発中のものです。
18/07/15 11:39:25.50 l4mbViwe.net
>>215
実行中じゃないのか?
実行中に変わった座標が、実行終了後に維持されるのは聞いたことないなぁ。メッシュやマテリアルは実行中に触るとそのままってのはあったけど。
230:名前は開発中のものです。
18/07/15 15:35:45.97 3jehjN70.net
>>217
丁寧な回答ありがとうございます
私のプロジェクトに
空のゲームオブジェクト->レイアウトグループ->テキスト
の構造がありましたが、
その場合はレイアウトグループの位置は変わってしまっていましたが、グループ内のテキストの配置は維持されていました
つまり、レイアウトグループの子の構造は崩れないが、空のゲームオブジェクトの子は崩れるということです
結局、空のゲームオブジェクト以下にGUIを配置しているのが問題な気がしますね
対策は、入れ子の親には必ずレイアウトグループをアタッチするといったところでしょうか
しかしレイアウトの自由度が制限されるのが問題ですね・・・
>>218
原因は未だに不明です
再現性の無い現象なのでなかなか原因究明が難しいです
>>219
気づいたら崩れているのでタイミングはよく分かっていません
感覚としては、実行後に崩れている傾向が強いと感じています
231:名前は開発中のものです。
18/07/15 17:16:08.29 7ZKErhFA.net
>>220
原因が不明?
それ最悪だよ、
泥縄式に対処してたらこれから先バグに悩まされる
リリース後にもいつ発生するかわからない
プロジェクトが小さいうちに原因をはっきりさせることをおすすめする
232:名前は開発中のものです。
18/07/15 18:42:31.42 3jehjN70.net
2017.3のバグみたいです
報告多数ですね
URLリンク(forum.unity.com)
I encountered this after upgrading to 2017.3. One of my UI windows was all messed up,
so I tried to fix it, and upon hitting "Apply", some elements auto-centered.
After reviewing everything for rogue layouts or anything like that, and with it happening on other elements, I went to the internet and came across a few threads like this.
Fortunately, I saved a copy of my 2017.2 project and going back was as easy as renaming a folder.
But I think this is a pretty severe bug, it could effectively stale a project relying heavily on UI.
233:名前は開発中のものです。
18/07/15 19:21:39.40 nN3qp9d6.net
さすが公式フォーラム
現役の人が集まるだけあって被害者多数でワロタ
234:名前は開発中のものです。
18/07/15 22:33:17.00 3jehjN70.net
このバグ数ヶ月放置されてけっこう問題になってたみたい
エ
235:ディターのバグとかどうしようもないし、最新版を使うことにしました
236:名前は開発中のものです。
18/07/15 23:09:45.09 MAbCEPsD.net
>>222
日本語で話せやガイジ
ここは日本のUnityスレだぞ
237:名前は開発中のものです。
18/07/16 08:31:47.70 Clqj8SOY.net
>>225
いや、unityつかうなら英語くらい覚えろよ……
238:名前は開発中のものです。
18/07/16 08:36:44.72 TKHzOtNK.net
誰か翻訳AI完成させて
239:名前は開発中のものです。
18/07/16 13:24:51.73 bDaRS4qJ.net
英語読めないのにUnityって冗談でしょ
240:名前は開発中のものです。
18/07/16 18:28:16.15 spAkMe49.net
>>225はアセットおじさんか
言葉の節々に知能の低さ、羞恥心の無さがにじみ出ているのは流石だな
誰か「アセットを買えば英語力も上がるし羞恥心も備わりますよ」って教えてやれよ
241:名前は開発中のものです。
18/07/17 15:11:04.49 6120ASjx.net
>>229
アセットを買えばそんな勘違いもなくなりますよ
242:名前は開発中のものです。
18/07/19 05:14:32.69 k0fYdkdd.net
スマホアプリ作っている人は
iphoneとandroid両方持ってるの?
androidしかないんだけどipone必要ですか?あとmacも無いんですけどこれもいりますか?
243:名前は開発中のものです。
18/07/19 06:05:50.04 ElRV+zTP.net
>>231
macないとiPhone開発は実質無理だと思っていいよ
両OSにアプリ出すならmacは必須
iPhoneはなくても最悪mac上のエミュとかiPadとかでもなんとかなる
244:名前は開発中のものです。
18/07/19 07:04:32.59 k0fYdkdd.net
同じアプリでもiPhoneのが売上いいみたいだから出したいけど、mac必須ですか…
androidでmac買えるぐらい稼げたら買おうかな
245:名前は開発中のものです。
18/07/19 07:14:57.77 GFvO8zga.net
>>233
マックなんて2万でかえるだろ
246:名前は開発中のものです。
18/07/19 09:15:51.75 ZpvrD2eM.net
無理
247:名前は開発中のものです。
18/07/19 14:41:39.19 UVLnnnpG.net
CommandInvokationFailure: Unable to list target platforms. Please make sure the android sdk path is correct. See the Console for more details.
って言われてAndroidでビルドができないよー、ちゃんとAndroid SDK toolsを25.2.5にしてもダメだったし
SDKが古いかもってことも書いてあったからSDK消して入れなおしてtoolsを25.2.5にしてビルドしてもダメだったし誰か助けてー!
248:弟子
18/07/19 14:48:09.10 cAgC0uNk.net
>>236
コンソールに詳細でてる?
249:名前は開発中のものです。
18/07/19 16:25:47.27 ZpvrD2eM.net
アレだな。
250:名前は開発中のものです。
18/07/20 22:57:05.42 KCUa1hS5.net
>>233
AppStoreは毎年1万くらい掛かるけど、GooglePlayなら2500円払えばあとは儲けるだけだからなぁ。
251:名前は開発中のものです。
18/07/20 23:49:34.13 5krUI5Wa.net
2500円回収できんのか?w
252:名前は開発中のものです。
18/07/20 23:56:29.44 BE6ITBtY.net
>>240
えっお前は出来ないのwwwwww
253:名前は開発中のものです。
18/07/21 02:10:26.26 p4e4X/of.net
しっかり考えてちゃんとしたもの作って出さないと
GooglePlayは簡単には回収できないよ
254:名前は開発中のものです。
18/07/21 04:47:48.99 sXvBSliU.net
個人アプリ開発者の9割はその年間2500円も稼げないけどね
255:名前は開発中のものです。
18/07/21 08:02:15.02 PiBb+geA.net
そもそも自称開発者は、アプリを完成させ、リリースすることすら・・・
256:名前は開発中のものです。
18/07/21 10:33:31.64 Wf3Uoe2X.net
それはお前が出来てないだけ。皆そうだと思っていれば幸せなんだろうな
257:名前は開発中のものです。
18/07/21 18:00:40.90 EggmhhQD.net
ソーシャルゲームが流行る前はしょぼい物作って�
258:澀ooglePlayのリストに出るから余裕で回収できたけどね。 今はリリースされたことすら知られないから…。
259:名前は開発中のものです。
18/07/26 04:46:43.92 kNQ25ubs.net
始めたばっかだけどunityで適当に画像入れてsave projectして、入り直したら画像じゃなくて何か別の物に変換されててlayer編集が効かなくて心折れそう、誰か助けてクレメンス
260:弟子
18/07/26 05:42:19.49 fev1xFrc.net
さすがにそれじゃエスパーさえわからんで
なにがSSとか無いのん?
261:名前は開発中のものです。
18/07/26 07:19:48.83 H78k3yRK.net
左が初期の画像、変わったのが右側って感じ
うまく貼れてなかったらスマソ
URLリンク(imepic.jp)
262:弟子
18/07/26 07:32:26.89 fev1xFrc.net
>>249
右みるとトランスフォームが子供になってるようだけど
手順としては、シーンに画像を張って、セーブしただけですか?
もし可能ならプロジェクトごとアップできます?
263:名前は開発中のものです。
18/07/26 08:05:18.50 1mgpo5S/.net
>>250
そうです、貼ってセーブしただけです。
プロジェクトは仕事から帰ったら揚げます(社畜)
本体の設定に問題ある感じですかね?
264:弟子
18/07/26 21:17:51.66 fev1xFrc.net
一応画像をアセットにドラッグし、そのごヒエラルキにドラッグして
セーブした画面です
URLリンク(i.gyazo.com)
特に変化しないようです
自分はUnity2017.3.1f1を使ってます
265:名前は開発中のものです。
18/07/27 05:07:03.51 u+ao3S/Q.net
Unity 2018.2を使っているのですがunityの設定はどこでできますか?
ちなみに画像のバージョンはUnity 4.2.0 です
URLリンク(i.imgur.com)
266:名前は開発中のものです。
18/07/27 05:10:40.64 u+ao3S/Q.net
いい忘れてました自分はWindowsを使っています
267:弟子
18/07/27 09:03:28.71 +juP2VsI.net
>>253
>unityの設定はどこでできますか?
Unityの何の設定でしょうか?
>いい忘れてました自分はWindows
画像はどうみてもMacですが、人の画像でしょうか?
268:名前は開発中のものです。
18/07/27 09:27:51.68 u+ao3S/Q.net
>>253
解決しました
>>255
再生中に周りの色を変える設定をしようとしたのですがeditのところでできました
269:名前は開発中のものです。
18/07/27 11:27:25.50 PHzeq30F.net
>>255
その程度もエスパーできないのかよ
270:弟子
18/07/27 13:05:22.56 +juP2VsI.net
>>256
無事に出来て良かったです
271:名前は開発中のものです。
18/07/27 23:23:17.09 xl4o2aTS.net
>>252
結局本体再DLして解決しました
付き合ってくれてありがとうございます…
272:弟子
18/07/27 23:33:40.12 +juP2VsI.net
>>259
無事に解決してなによりです!
また何かあればお気軽に!
273:名前は開発中のものです。
18/08/02 14:10:27.16 8NS2VTtG.net
すみません、Unity独特なプレハブについて
どういうもので、具体的にはどういう使い方ができるのか、
わかりやすく教えてくれませんか?
これではわかりません。
URLリンク(unity3d-com-jp-learn-tutorials.s3.amazonaws.com)
274:名前は開発中のものです。
18/08/02 14:26:45.67 YQXK/fNI.net
例えばシューティングなどで同じ敵を100体出したいとする
シーンに1体作ってあとはコピペで99体作ったとする
作ってる最中にこの敵に変更を加えたくなってきたとする
例えばタグをEnemyに変えたいとか
そうするとこの場合だと100体全てを修正しないといけなくなる
一方プレハブから100体作った場合だと
プレハブ本体を修正するだけでシーン中の100体が修正される
とかね
275:THE・シンプル先生
18/08/02 14:50:49.16 MarJrTds.net
>>261
プレハブはクローンだと思えばいい。
本体(オリジナルとも言う)のコピー品さ。
利点は大量に画面に表示した時に処理落ち(スロー再生状態)になりづらい。
ワンピース海賊無双というゲームをパクって作った場合
プレハブを使って作ると同じ物が作れるが
プレハブを使わないで作ると処理落ちが激しく遊べる状態ではない。
276:名前は開発中のものです。
18/08/02 15:11:17.76 8NS2VTtG.net
>>262 >>263
レスありがとうございます。
directX、C++からUnityに乗り換えた者なんですが
プレハブってのは、
敵のクラスをインスタンスしたものだというイメージでいいんでしょうか?
それとも、敵のクラスを定義したもので
あとでシーンの中でプレハブをインスタンス化させるのでしょうか?
277:THE・シンプル先生
18/08/02 20:25:19.20 MarJrTds.net
>>264
敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK。
作成タイミングは自由。
シーンの中で動的にプレハブを作成する事も可能。
エディット画面で事前にプレハブを作成して配置して置く事も可能。
278:名前は開発中のものです。
18/08/02 22:16:19.04 IKwT233P.net
>敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK。
こんなに堂々と嘘をつく奴も珍しいなw
素直にマニュアル見とけよ
URLリンク(docs.unity3d.com)
279:名前は開発中のものです。
18/08/03 00:07:19.01 YqXFTdeb.net
クラスかインスタンスかの二択なら
クラスだろ
280:THE・シンプル先生
18/08/03 04:00:21.11 gwkzOX1I.net
>>266
説明に間違いなし。
名前の通り初心者にシンプルに説明するのが目的で細かい説明は全てカットしてる。
初心者には自信を持って
『敵味方関係なくあらゆるクラスをインスタンス化したものがフレハブという認識でOK』
この説明を推す。
281:THE・ステップアップ先生
18/08/03 04:11:45.63 gwkzOX1I.net
>>266-267
中級者以上の知識がある人達には
ゲームオブジェクト自体もクラスと説明すれば分かってもらえるかと。
ソースコード上で行うインスタンス生成を
Unity的な言葉に直したものがプレハブと呼ぶにすぎない。
相当細かく説明すると厳密には違うかもしれないけどね。
282:名前は開発中のものです。
18/08/03 07:25:47.78 UvI2T87H.net
Instantiateなんてもんがわざわざあのになんでインスタンスにこだわるん?
プログラミングの知識あるならシーンに設置したオブジェクトがインスタンスって方がわかりやすいぞ
シーン内に個別に設置(インスタンス)したオブジェクトの値を変更してもプレハブ(クラス)には影響がないが
プレハブ(クラス)の値を変更したら個別に設置(インスタンス)したものにも影響がある
インスタンスからクラスに無理やり影響を与えるのがApply
283:名前は開発中のものです。
18/08/03 07:26:59.37 /74BHbXn.net
ほーんじゃあプレハブからクローンしたゲームオブジェクトはなんなんですかね
あれこそインスタンスじゃないんですかね
284:名前は開発中のものです。
18/08/03 08:42:46.93 Z5jah2NB.net
プレハブはプレハブでいいじゃないか。いちいち既知の概念に置き換えないと理解できないの?
285:名前は開発中のものです。
18/08/03 08:57:39.72 8Qhd0PCF.net
再利用しやすくするものくらいの認識でいいんじゃね?
286:名前は開発中のものです。
18/08/03 09:13:10.67 Tb6IvIdd.net
博識のある方達は、やはり呼び名とか拘らないといけないんですね大変ですね。
私なんかは、インスタンスとか未だに理解していません、できてません。
ただスクリプトで複製したり、親子入れ替えたり消したり、ここに置いときゃいい、ぐらいの知識で十分作れてますから、初心者レベルは楽で良いですよ。
287:名前は開発中のものです。
18/08/03 09:29:06.72 Z5jah2NB.net
あえて言うとプレハブはインスタンスのスナップショットな。instntiateはクラスのインスタンス化とはまた違った仕組みだし。無理矢理他言語の経験持ち込まずに、素直にマニュアル読んだが利口。
288:名前は開発中のものです。
18/08/03
289:10:05:56.53 ID:Z5jah2NB.net
290:名前は開発中のものです。
18/08/03 10:12:09.26 Z5jah2NB.net
>>268
惜しい、インスタンスを保存したもの、だったら合格点。
291:名前は開発中のものです。
18/08/03 10:52:55.93 +s2o5GnK.net
盛り上がってますね。
プレファブはテンプレート化されたファイルですよ。
クラスをインスタンス化したものと言うのはメモリ展開されたクラスです。不正解。
プレファブはキャッシュされる前のファイルです。
まあ、キャッシュして書き換える事も出来ますが、どこぞのボッキングが、アセット書き変わった言って嘆いてましたんで、注意が必要です。
292:弟子
18/08/03 11:30:14.45 M8FCr8g3.net
ここ初心者用に建てたスレなんで議論とか他でやって
293:名前は開発中のものです。
18/08/03 11:58:41.31 udevAjot.net
初心者は議論なんかするなってか
そりゃ永遠に初心者やな
294:名前は開発中のものです。
18/08/03 13:15:54.04 +vZr26Ym.net
>>279
お前には自分で立てた専用スレがあんだろ。あ、ここもでしたね、失礼しました。
295:名前は開発中のものです。
18/08/03 13:27:05.32 +vZr26Ym.net
匿名かつ初心者ばっかりだからこそ出来る、このいい加減な議論。楽しいじゃないか。
296:名前は開発中のものです。
18/08/03 14:04:55.92 lMgrnDzV.net
まあ、弟子さんも十分初心者なんで、議論みて行って下さいな。
アレですよ?ここで、出てきたキーワード、分からなかったら、ググると良いですよ~
297:弟子
18/08/03 14:08:09.19 M8FCr8g3.net
スレチなマウンター共は
【質問以外なんでもOK】Unity雑談スレッドその1
スレリンク(gamedev板)
で遊んであげるからここにこないでね、迷惑だから
298:名前は開発中のものです。
18/08/03 14:10:34.37 KvMBRbxy.net
昨日からの酷い流れを見て感じたけど
初心者同士で馴れ合ってても百害あって一利なし
正しい知識を習得するのが大事
調べ物は公式マニュアル見る習慣を
最低限公式チュートリアルの初級(英語版)はやったほうがいい
299:名前は開発中のものです。
18/08/03 14:27:57.12 lMgrnDzV.net
紙パンチに興味持てんわ
285さんのは正論ですね。
でも超概要として、こういうやり合い見るのも有りじゃないすかね。
自分も知らない事結構出てくるし。
300:名前は開発中のものです。
18/08/03 15:13:38.43 euFxSDg2.net
ここはクソコテ弟子が初心者相手にマウント取るために立てたスレなんで
初心者以外が質問、回答すると通報されてしまいますよ。
301:名前は開発中のものです。
18/08/03 17:18:58.52 XE8vIJkM.net
決まったobjectの当たり判定内にいるかつボタンを押したときのスクリプトが組めません、、&&を使えばいいという知識でやったところコンパイルエラーが出てしまいました。名前の一致などは確認済みですこんなタイミングですが教えてもらえると助かります。、、
302:名前は開発中のものです。
18/08/03 17:26:14.84 Tb6IvIdd.net
エラー文とその行を貼れ。
まずはそれからだ。テンプレ
303:名前は開発中のものです。
18/08/03 17:32:30.72 XE8vIJkM.net
if (collision.gameobject.name == "Perfect")&& (Input.GetKeyDown(KeyCode.LeftShift));
{
Destroy(gameobject);
}
の部分です。エラーは多いんですが
・`UnityEngine.Collision' does not contain a definition for `gameobject' and no extension method `gameobject' of type `UnityEngine.Collision' could be found. Are you missing an assembly reference?
・Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement
・The name `gameobject' does not exist in the current context です
304:名前は開発中のものです。
18/08/03 17:36:02.42 Tb6IvIdd.net
collision.gameobject.name をログ出力できるかやってみ?
305:名前は開発中のものです。
18/08/03 17:37:26.76 Tb6IvIdd.net
ちな、&&は全角じゃないよね?
306:名前は開発中のものです。
18/08/03 17:43:20.14 XE8vIJkM.net
ログ出力がなにかいまいちわかってなくて、、すみません。
&&は半角にしてもビジュアルスタジオ上で無効ですと書かれてしまいます
307:名前は開発中のものです。
18/08/03 17:52:35.95 y6ZFjsSR.net
Unityの「シリアライズ」というのは、インスペクタみたいなのに表示できるようにする為などに、データをUnity内部機構が読み込める独自様式に変換するという意味だろ
プレハブはあくまで型と初期値の定義であって、プレビュー時や実行時にシーンに生成されて初めてメモリ上に占有領域が確保されて情報が記憶される(メモリ上オブジェクトとしてインスタンス化される)
だからUnityプロジェクト中のヒエラル木も、厳密には型と初期値の定義でしかなく、インスタンス化されたメモリ上オブジェクトではない
Unityゲームオブジェクトやプレハブのインスタンス化は、Unity内部様式向けにシリアライズされた型と初期値の定義の情報に基づいて「デシリアライズ」することで行われる
あと日本語の解説ページは分かりにくい
さらにあと「スナップショット」は通常、システム全体の一時的状態を指すから、システムの構成要素(プレハブ)に使うのはニュアンスがずれてる
308:名前は開発中のものです。
18/08/03 17:53:09.72 s8alTO1O.net
>>293
if文の最後にセミコロンあるよね。
それをまず消してみて。
309:名前は開発中のものです。
18/08/03 17:54:46.53 XE8vIJkM.net
消しました。特に変化なしです
310:名前は開発中のものです。
18/08/03 17:56:40.41 s8alTO1O.net
>>294
俺もそれ思った。スナップショットだとvmを思い浮かべてしまうわ。
ストレージの技術感のが高いよな
311:名前は開発中のものです。
18/08/03 19:05:27.40 Tb6IvIdd.net
>>290
Debug.Log (collision.gameobject.name);
で、何が表示されるか?
312:名前は開発中のものです。
18/08/03 19:12:48.91 Tb6IvIdd.net
>>290
if( (collision.gameobject.name =="Perfect")&&(Input.GetKeyDown(KeyCode.LeftShift)))
{
Destroy(gameobject);
}
こうかな?
313:名前は開発中のものです。
18/08/03 20:24:49.31 XE8vIJkM.net
>>299 単純にDebug.Log (collision.gameobject.name); を空のスクリプトに打てばいいんすかね?
いただいたプログラム打ちましたが駄目でした、、一応全文載せてみます
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class judgePerfect : MonoBehaviour
{
void Update()
{
if ((collision.gameobject.name == "Perfect") && (Input.GetKeyDown(KeyCode.LeftShift)))
{
Destroy(gameobject);
}
}
}
314:名前は開発中のものです。
18/08/03 20:25:58.25 BofVo0Am.net
gameObjectじゃないの?
315:名前は開発中のものです。
18/08/03 20:28:13.30 Tb6IvIdd.net
>>300
>>>299 単純にDebug.Log (collision.gameobject.name); を空のスクリプトに打てばいいんすかね?
で、これで表示された内容は?
316:名前は開発中のものです。
18/08/03 20:33:47.70 Tb6IvIdd.net
>>301
これですね。
317:名前は開発中のものです。
18/08/03 20:38:06.67 XE8vIJkM.net
このプログラムに関する項目じゃないオブジェクトの詳細のようなものが追加されました
318:名前は開発中のものです。
18/08/03 20:46:54.61 BofVo0Am.net
collisionが唐突にでてきてるけど根本的に間違ってるんじゃね
OnCollisionEnterもつかってないし
319:名前は開発中のものです。
18/08/03 20:56:53.50 g4hffkLt.net
>>294
プレハブが型と初期値の定義なんてどこに書いてあるよwww日本語と英語には書いてないから、あとは俺が読めない韓国語か?
gameObjectとコンポーネントのSerialized dataだって書いてあんだろ。
320:名前は開発中のものです。
18/08/03 21:11:35.02 g4hffkLt.net
>>305
俺もそれ思った。
321:名前は開発中のものです。
18/08/03 21:13:54.44 y6ZFjsSR.net
ohiohiまた威勢のいい○○が沸いてきやがった
すぐ韓国とか言い出す糖質ッぷりには失笑を禁じえないな
>Serialized data
そのdataの中身は何なんだ?噛み砕いて言ってみろ、二等兵見習い
322:名前は開発中のものです。
18/08/03 21:57:13.
323:06 ID:g4hffkLt.net
324:名前は開発中のものです。
18/08/03 22:40:26.78 y6ZFjsSR.net
>ゲームオブジェクト
>コンポーネント
これらはとどのつまりはクラス。
クラスとは何か?
325:名前は開発中のものです。
18/08/03 23:17:18.29 5oCXpdg6.net
アプデしたらいつも調子悪くなる
326:名前は開発中のものです。
18/08/04 04:54:34.40 nYTIxyUA.net
基本的にゲームプログラミングでは
シーン内で生み出す敵とか大抵配列に入れ込んで管理しますよね?
for文でその配列の要素回して抜き出したり。
でもUnityの2Dシューティングとかのチュートリアルを確認してみると
次々と生み出された敵を配列に入れ込む処理が見当たりませんが
これ、個々のオブジェクトの把握はどうやってるんですか?
327:名前は開発中のものです。
18/08/04 05:19:51.58 uwGBYqQ5.net
>>310
なるほど、型か!ってなんねーよww
シリアライズって意味わかってんの?クラスを保存じゃなくてインスタンスを保存だろ。
ヒエラルキー上のインスタンス群をシリアライズして保存するんだから、どちみちハズレなのよ。
328:名前は開発中のものです。
18/08/04 06:49:36.83 jfygBgbK.net
おまえら日本語で話せよ
329:名前は開発中のものです。
18/08/04 07:35:21.25 uwGBYqQ5.net
>>312
7.2は読んだか?
330:名前は開発中のものです。
18/08/04 09:43:45.62 8h4ounWr.net
>>313
わかったわかった
お前の人生は大ハズレだな
インスタンスについて基本的な理解が不足してるぞ
ヒエラル木も結局は型定義と初期値に関するシリアライズされたデータの集まりで、プレビュー時や実行時に初めてインスタンス化されてるんだよ
331:名前は開発中のものです。
18/08/04 10:32:45.75 uwGBYqQ5.net
>>316
プレハブの話だよ、ヒエラルキーからゲームオブジェクトをドラッグしてプレハブ作成した時点でヒエラルキー上のはプレハブインスタンスになるだろ。
そしてプロジェクトビューのプレハブ自身はヒエラルキー上のプレハブインスタンスがデシリアライズされる前のデータ、プレハブソース。
このプレハブソースを型だったて言い張るのは無理があると言う話だ。だからどんな意味で型と言ってるか聞いたんだ。雛形って意味なら俺も納得。
332:名前は開発中のものです。
18/08/04 10:36:45.24 uwGBYqQ5.net
>>317
あ、ヒエラルキー上のプレハブインスタンスはソースと変更の参照でOOPで言うインスタンスじゃないのはわかってるから。
333:名前は開発中のものです。
18/08/04 10:41:25.18 uwGBYqQ5.net
>>317
>そしてプロジェクトビューのプレハブ自身はヒエラルキー上のプレハブインスタンスがデシリアライズされる前のデータ、プレハブソース。
ヒエラルキー上のプレハブインスタンスが、実行時やプレビュー時にデシアライズ、と付け加えとく
334:名前は開発中のものです。
18/08/04 10:55:45.37 8h4ounWr.net
>ヒエラル木
デバッグ時にはモニタできるから、「シリアライズされた初期値およびデバッグ実行時の現在値」という表現が良いのか
しかしなぜ「シリアライズ」という言葉を使うんだろうか
ヒエラル木を構成する連続した要素の一つに組み込むという意味なのか
335:名前は開発中のものです。
18/08/04 11:19:34.99 qIP9aSz0.net
>>320
お前ら何でプレファブの中身見て見ないの?
YAMLで書かれたファイルだって一発で分かるだろ、つまりシリアライズされて保存されてるファイルって事だよ。
一方ヒエラルキーに見えてるのもファイル。
再生実行した時だけ、メモリに展開されてる。
わかった?
336:名前は開発中のものです。
18/08/04 13:22:29.52 8h4ounWr.net
1000回日本語文章読んでもバカには無理w
337:名前は開発中のものです。
18/08/04 13:36:44.18 ASd5/j6X.net
>>321
へー、ヒエラルキーに表示されているのはシーン上のオブジェクトのリストじゃなくてファイルなんだぁ。
ファイルシステムのどこにそのファイルがありますか?またシーンビューで編集しているときはメモリ上にはなくてディスク上にあるんですか?
公式のマニュアルとは違う説明で混乱しそうです。
338:名前は開発中のものです。
18/08/04 13:52:20.56 qIP9aSz0.net
>>323
右上のケバDebugにするとLocalIdentifierInfileってでてくんだろ。
隠蔽されてるが、あるんだよ。それアクセスされると色々ぶっこわれるからな。
339:弟子
18/08/04 13:55:14.77 +VI6JuUR.net
初心者スレでマウント取りたいのは分かるから巣に帰って
ちゃんと新しいの作ったからさ
【3Dゲームエンジン】Unity質問スレッド37
スレリンク(gamedev板)
340:名前は開発中のものです。
18/08/04 14:04:46.49 qIP9aSz0.net
初心者に分かるように言ってんじゃん。
紙パンツスレ飽きちゃったんか?あっちで吠えてろよ
341:名前は開発中のものです。
18/08/04 14:29:50.67 jfygBgbK.net
おまえらの話は誰にも通じてないし役にもたってないぞ
342:弟子
18/08/04 14:41:43.17 +VI6JuUR.net
>>326
YAMLとは?
シリアライズとは?
ケバdeaugとは?
初心者なんでまったく訳わかんないですわ
343:名前は開発中のものです。
18/08/04 14:43:13.78 yHEIRFFR.net
>>324
それってシーンファイルに書いてある識別IDじゃない。んでシーンを保存するまで0だよ。保存する前のヒエラルキーはどう説明するのさ。
344:名前は開発中のものです。
18/08/04 14:45:18.52 yHEIRFFR.net
>>328
初心者スレで聞いてみれば。
345:名前は開発中のものです。
18/08/04 14:50:04.55 cpg8UDOV.net
>>328
知らなくても作れるけどな。
346:名前は開発中のものです。
18/08/04 15:05:56.25 qIP9aSz0.net
>>329
Editorがシーン用にDBを構築してるって事なんだよ。隠蔽って書いただろ。
シーンの中見たなら、ある程度シリアライズされてる内容見えただろ。でも全てじゃないのは分かったはずだ。
未保存がメモリで動く訳ないだろ。実行前に必ず保存されてるわ。
保存前のヒエラルキーは見た目だよ、ドラフト扱いな。
もう少しEditorとUnityEngineの違い分かった方がいいな。
347:THE・シンプル先生
18/08/04 15:07:18.36 KOItUBKr.net
>>312
自分で工夫する事で昔の「main()ループ」に近い物が作れる。
①:空のゲームオブジェクト(Empty)を適当な位置に作る。名前は仮に"GameMain"としておく。
②:次に適当な場所に"GameMain.cs"と仮の名前でC#スクリプトを作る。
③:②を①にアタッチ
④:②の中にprivate属性などGameObject型の動的配列の"元だけ"を宣言 → 例:GameObject[] Enemy;
⑤:②の"start()"などで実際に必要な数の配列を作成 → 例:Enemy = new GameObject[3];
⑥:"GameObject.Find("※オブジェクト名").gameObjectを使い、先程作成した配列にシーン上のGameObjectを関連付けていく → 例:GameObject[0] = GameObject.Find("Enemy0").gameObject;
⑦:後はGameObject[0]を使う
当然他のやり方も無数にある。
348:THE・ステップアップ先生
18/08/04 15:19:06.70 KOItUBKr.net
>>312
次の内容はおまけなので意味不明な場合は気にしなくていいよ。
ソース上でのオブジェクトの管理のしやすさはメモリー使用量に反比例する。
今までのやり方(main()ループのやり方)だと扱いたいオブジェクトを最初に配列に全て格納するのでそれだけ沢山メモリーを占有し続けることになる。
旧型のゲームを作る場合はこのやり方でも問題ないし今でもこっちの方が扱いやすい場面が多々ある。
とくに小規模ゲームの場合はこっちのやり方で全然いいと思う。
じゃあUnityがこの古き「main()ループ」のやり方になっていないのは何故かというと
中~大規模のゲーム作成も想定して作られてるのもあると思う。
この規模になると次の事を実現しないといけない。
・必要な場面にだけメモリだけを使いこまめに確保と解放を繰り返す節約型モデル
・もともと非常に重い3D物理演算を実用レベルで運用する
・もともと複雑で重い3Dの当たり判定処理(コリジョン)をプログラマが手軽に扱えるようにする
これの実現でメモリー制約の厳しいスマホで苦労せずに3Dゲームを作れたり
MMOやオープンワールド系のゲームを作れるポテンシャルを実現している。
FCマリオやテトリス作るなら"main()ループ型"でいいけど、モンスターハンター作るなら"main()ループ型"では死ねるよという感じ。
実際に何かを作ってみると分かるが当たり判定(コリジョン)は"main()ループ型"で回して中でいちいち判定するより
オブジェクト1つ1つにC#スクリプト埋め込んで当たった時に勝手に「当たったよ!」とイベント通知してきてくれる方が100%楽。
余談だが、UnityやVisualStudioのようなGUIでモデルを配置できるエディッタ時代ではなく、コマンドプロンプト時代のCUI時代にソースで扱っていたクラスのカプセルの概念、あれをビジュアル的にも再現できている今のUnityのモデルだとも感じてる。
今のUnityのやり方が、昔に目指されていたオブジェクト指向プログラミングの1つの完成形・理想形なんじゃないかと思う。
アセットの概念なんかはまさにオブジェクト指向プログラミングのカプセル可の恩賜だと思うよ。
349:弟子
18/08/04 16:23:58.28 +VI6JuUR.net
>>330
それはどこですか?
誘導お願いします
ここは、そういうスレなので教えてください
350:名前は開発中のものです。
18/08/04 16:28:00.38 qIP9aSz0.net
>>335
ほらよ、君にうってつけだ
スレリンク(gamedev板)
351:名前は開発中のものです。
18/08/04 17:03:05.01 u4pCimN6.net
>>332
>>>329
>Editorがシーン用にDBを構築してるって事なんだよ。隠蔽って書いただろ。
>シーンの中見たなら、ある程度シリアライズされてる内容見えただろ。でも全てじゃないのは分かったはずだ。
ヒエラルキーの表示じゃなくて、ヒエラルキーに表示されている、シーン上のオブジェクトの話をしてたつもりなんですけど。
>未保存がメモリで動く訳ないだろ。実行前に必ず保存されてるわ。
未保存のときもlocal identfierfile 0のままシーンビューやヒエラルキービューで編集出来ますけど、そのオブジェクトはメモリ上じゃなくてどこで動いてるんですか?
352:名前は開発中のものです。
18/08/04 17:27:38.46 qIP9aSz0.net
>>337
シーン情報はシーンにある。プレファブ情報はプレファブファイルにある。
てか見たんだろ?ファイルにあるわ。
もちろん画面に表示したり、編集させるにはメモリを使ってる。だけど電源オフったら消える通りストックはされておらん。
編集はできとるが、これがそのまま再生実行時に使われると思ってるところがあんたが嵌ってるところだ。
新規作成したらEditor用のメモリに展開はされる。
だけど電源オフったら消える通りストックはされておらん。
未保存データは再生実行時には使われておらん。
再生実行時に保存データを使ってEditor用のメモリに一旦展開する。これがデシリアライズな。
分かった?
353:名前は開発中のものです。
18/08/04 18:23:45.38 bPWDdaDo.net
>>338
誰か再生実行時の話してましたっけ?プレハブを作る場面の話だったと思いますけど。
ヒエラル木とか言ってる人に合わせて、ヒエラルキー上にリストされているシーン上のオブジェクトの事を指して、またはオブジェクトの階層構造自体の事をヒエラルキーって言ってたのが悪かったかな。
ヒエラルキーのリストは確かにファイル。
んで、編集中にプレハブを作りました。そのプレハブをシーン上に配置しました。シーン上に配置した時点でオブジェクト化されたんじゃないかと思うのですが、このときはプレハブソースからのデシリアライズは起きないのですか?
354:名前は開発中のものです。
18/08/04 18:30:26.82 sBxajZWZ.net
playerキャラとかNPCキャラとか複数のオブジェクトで使い回すような自作関数ってそれぞれにアタッチしてるスクリプトに書く?それとも1つ関数をまとめたオブジェクトを作ってそこに書いておいてその都度それぞれが参照する感じのほうがいいですか?
例えばオブジェクトの現在の座標とか着地判定を取得する関数とか
355:名前は開発中のものです。
18/08/04 19:26:52.87 qIP9aSz0.net
>>339
インスタンス化とデシリアライズの話が出たから、そのタイミングである再生実行の話をしただけで、いきなり誰かしたかと言うのはおかしい話。
プレハブから配置したのは、あくまでEditor上でシーン情報を作っただけで、デシリアライズは再生の時に起きるっての分かる為なんだが
まあ、ちょっとデシリアライズを誤解してるってか、話がどんどん逸れそうだからな。行間読むわ
多分言いたいのは、プレハブをシーンに置いた時に、プレハブ情報からシーン情報が構築されないのか?って言いたいんだろう。
一旦Editorのメモリ上では構築される。
そんで、再生や保存で、その時に当然Dirtyな置かれたオブジェクトがファイルに保存される。
再生の初期にシーンファイルを読み込んで、デシリアライズしてメモリ展開する。
オブジェクト化は再生の初期やInstantiateの時に起こる。これをインスタンス化と呼ぶ。
じゃあ、エディタで見えてるのは何なの?って言うと、編集のためにファイルをエディタ用のメモリに展開してるだけ。
最初にプレハブを置く=テンプレートからのエディタ用メモリへのコピー
保存=シーン情報の構築
ヒエラルキー=再生時のメモリ構築用データ
と思えば良い。
まだダメかな?いい加減疲れてきたぞ。をい
356:名前は開発中のものです。
18/08/04 19:33:40.98 qIP9aSz0.net
>>340
人それぞれかな。
俺の場合は、それぞれにアタッチしてる。だが種類は極小でなるべく余計な物はアタッチしないって方針
一個だけアタッチするなら、代表するオブジェクトに持たせたり、シングルトン使ってそいつにコンポーネント生やしたりもする。
シングルスレッドならUnirx辺りを使ってアタッチしないで生やしたりもできる。
それぞれ一長一短だから全部やってみるとええ。
357:名前は開発中のものです。
18/08/04 20:34:14.45 Ter6X2ca.net
>>340
良いか悪いか。
仕様に基づいて、一番最適な設計を行って実装するのがプログラマだから、察するに現時点の貴方のレベルからすると、342さんも言ってるように、とにかく実装経験を積むことが近道になると思う。
358:名前は開発中のものです。
18/08/04 20:47:00.20 s81iLtQ9.net
>>341
でもさ、公式のマニュアルに
URLリンク(docs.unity3d.com)
単に、プレハブアセットをプロジェクトビューからシーンビューにドラッグするだけで、プレハブのインスタンスを作成します。
プレハブのインスタンスとして作成されたオブジェクトは、ヒエラルキービューで青色の文字として表示されます(通常のオブジェクトは黒の文字で表示されます)。
て書いてあるのよ。
プレハブはシアライズされたファイルで、そのシリアライズされたファイルからインスタンスを作成するんだからデシアライズじゃないの?Unityではデシアライズとよばないの?
359:弟子
18/08/04 23:08:11.76 +VI6JuUR.net
>>336
君はスレタイ読めないのかな?
360:弟子
18/08/04 23:10:17.86 +VI6JuUR.net
>>344
呼び方とかどうでもいいのよ、動けば
議論したいなら他行くか、自分でスレ建ててそっちでやってね
361:名前は開発中のものです。
18/08/05 00:07:41.56 iaL/bkNc.net
弟子realize
↑
低能特有の神経質な悪臭が半端ないな
なんなんだこのゴミ
362:弟子
18/08/05 00:15:41.23 9xb2C49y.net
>>347
そのゴミが建てたスレに来て何言ってんの
363:312
18/08/05 01:31:28.80 CyFJgm7j.net
>>334
とても勉強になる回答内容に感激しました。
私はその昔ながらのmain()ループのやり方で生きて来たクチなので
Unityのマニュアルやチュートリアルに目を通し(熟読はしていませんが、
非常に困惑しているところだったんです。
ステップアップ先生の話を聞いた限り、仮にUnityでFCマリオを制作するとしても、
昔ながらのmain()ループのやり方をUnityで実行するより、
本来はUnityモデルを覚えて作った方が"ラク"だよ、ということですよね?
例えば当たり判定〜のくだりは確かにそっちの方が確実にラクなのが理解できますし。
それとも「いや、FCマリオくらいのゲームしか作る気ないなら、
この先Unityを覚えて制作せずとも、>>333のUnityの中で擬似main()ループで作る方が断然ラクだよ」とかですか?
というのもmain()ループのやり方が染み付いてしまっている私自体、
ゲームの処理には中心となるがループを置いて、
そこからすべての流れを構想してしまうオツムなんです。
Unityモデルは全オブジェクトが個々で処理され、バラバラに存在している感じ?というか
各オブジェクトや処理に非常にふあふあしていると感じました。
もちろん自分のUnity理解度がまだ足りないせいなのは重々承知してますが
アセットやツールで解決するそれぞれの処理がブラックボックスすぎて、
初心者としてはそれらの応用が難しい。
アニメーション描画も、正直配列に各画像を入れ込んでフレームで回す方がラクなのに、
AnimationEventを使ってメモリを動かしてイベントの制作をしなければならない?のも余計ややこしく感じます。
結局、ソースだけで解決できないエンジンなので例えFCマリオであっても
Unityを覚えないと作れないことにちょっと面食らっています。
それらもステップアップ先生のおっしゃる通り
3Dや中~大規模のゲーム作成も想定されたUnityだからこその仕様なのだと理解しましたが
どうなんでしょうか、私が2Dオンリーのゲーム制作目的であっても
Unityモデルで制作方法を覚えた方があとあと必ずラクになりますか?
変な相談ですみません。
364:まあ、人それぞれやな先生
18/08/05 02:07:48.11 bE8Y0pws.net
まあ、人それぞれやな
365:名前は開発中のものです。
18/08/05 03:32:42.76 IZ2haYgx.net
自分のやり方でやってみれば
unityでも十分できると思うよ
一元管理のほうがコード書きやすいし
チュートリアルみたいなコードは手練れてないと無理じゃね
366:THE・ステップアップ先生
18/08/05 04:35:33.53 PSh59YKG.net
>>349
mainループ式は、シングルスレッドとかシングルタスク的な動きを連想させるけど
Unity式は、マルチスレッドとかマルチタスクとか非同期的みたいな動きだから慣れていないと取っつきにくいだろうね。
どちらかというと、Webのサーバークライアントプログラムの扱いに似てるかもね。
これは慣れだよ。
最初は四苦八苦かもしれないけど
旧式でもゲームを作れる技量があるのなら、触っている内に必ず非同期的な作りにも慣れる。
慣れるとメリットの多さに気づける。
Unity式のやり方を覚えた方が絶対に得だよ。
作れる物の幅も広がるしステップアップに繋がる。
そしてソースが非常に簡略化する時が多い。
例えば動きを実現するのにmainループ型では30行必要だった処理が1行で済むなんてこともあるよ。
最初から全てをUnity式のやり方にする必要はなくて
慣れてるmainループ式で作り、Unity式にしたほうが便利そうな部分だけそっちにする感じでいいんじゃないかな?
実際のゲーム作りも、ほとんどが「main()ループ式 + Unity式のハイブリット型」になると思う。
main()ループ式だけとか、Unity式だけという作りにはならないと思うよ。
他の人はどうなのかは知らないけど自分の場合は必ずゲーム全体を管理するmainループ的なスクリプトが存在するよ。
mainループはゲーム全体の状態をコントロール(ゲーム中なのか?ゲームオーバーなのか?などの状態)したり、
ラジコンを動かすプロポ代わりとなり、各GameObjectに実装した関数へ「待機」とか「アクションAの動きを実行せよ」とか指示をだして操作してるようなイメージ。
各GameObjectには渡された引数で色々な動作をするように記述したC#スクリプトをアタッチさせておき、指示を受けて動くロボット的なイメージ。
人によっては"GameMain"に相当する部分を"GameMgr(ゲームマネージャー)"みたいな名称にしてるかもね。
367:名前は開発中のものです。
18/08/05 07:32:27.22 7w+AZmvn.net
>>346
俺には初心者がそれなりにマニュアル読みつつ、独自解釈のエラそうな知ったかを追い出そうとしてるように見えるけど?
368:名前は開発中のものです。
18/08/05 09:16:54.78 1CW9jcvb.net
さすがお盆休みだなぁ。
369:名前は開発中のものです。
18/08/05 09:22:07.75 1CW9jcvb.net
>>348
初心者スレなんていう公共的なスレタイ付けといて言うセリフじゃないぞ。個人的なスレにしたいならもっとスレタイ考えろ。
初心者スレはお前が立てなくてももっと普通の奴が立てるからでしゃばんな。
370:弟子
18/08/05 11:17:58.00 9xb2C49y.net
>>355
夏やなぁ
通常質問スレが36間でいっても初心者スレ建たなかったんだよなぁ
371:名前は開発中のものです。
18/08/05 11:56:29.79 s2ZX6Afg.net
ネトゲじゃないんだから雑談や初心者質問スレなんか需要無いんだよ。
次は復帰者スレでも建てるの?
372:名前は開発中のものです。
18/08/05 15:59:20.45 Zg/i6Juh.net
ヘックスマップ作りたいんだけど
こういうマップチップてプレハブ並べて作るの?
373:312
18/08/05 16:09:57.60 CyFJgm7j.net
>>352
昔ながらのゲーム制作方法を交えてアドバイスして頂けること
非常にわかりやすく助かります。ありがたいです。
そのため、どうしてもこの機会にアドバイスを受けたいのですが
シンプルに説明しますと、私のやってきたことは
ゲームマネージャーを作り、そこですべてを把握させ、
各オブジェクトは属性を振り、配列に入れ、属性同士でコリジョン判定。
真になった場合に相手を見てそれぞれの処理をする
(厳密には、プレイヤーなどは専用にコリジョン判定を回したり)。
各マップチップとの判定も同じで、ブロックごとに属性を振り配列に入れ込んで判定します。
シーン遷移についてもシーンマネージャーを作り、マネージャーより命令がくれば指定のシーンに飛ぶ、それだけです。
サウンドもシーン遷移の要領でサウンドマネージャーを作り、命令がくれば切り替える感じです(SEは各オブジェクト内で鳴らします)。
もちろんこれらはご存知かと思いますが、ソースは多かれどこんなシンプルなものでしたので
今はUnityの方が面倒に感じて、参っております。
理解度が低いのはもちろん、ご指摘を受け、全部Unityのやり方でやろうとしていたせいだと思いますし、
確認してみたチュートリアルが昔ながらの作成方法では無い説明ばかりなのも弊害のひとつですし、
あとネットで探す場合3Dの方の情報とこんがらがっているのも弊害といえます。
私の様な時代錯誤なゲーム制作者が、初Unityで試しにFCマリオみたいな
2Dアクションゲーム(もちろん簡単なレベルに落とします)を制作してみるとして、
どこの処理を「Unity式のハイブリット型」を選ぶのがベターなんでしょうか。
古きも新しきも理解し、両方の比較ができるステップアップ先生
どうか教えて頂けませんでしょうか。
374:名前は開発中のものです。
18/08/05 19:46:20.43 HJil90QJ.net
オープンワールド的な大きなterrainにするために(見えるように)キャラとかオブジェクトのScaleを0.1にするとかお前ら的にはアリ?ナシ?
terrain分割系のアセット使うのは無しの方向で
terrain自体のサイズは実質2000x2000くらいが限界なんだよなぁ
375:名前は開発中のものです。
18/08/05 22:20:17.60 1CW9jcvb.net
何ここ、壮大な自演スレ?
376:弟子
18/08/05 22:41:53.80 9xb2C49y.net
>>361
そだよ
だから、でしゃばんな
377:弟子
18/08/05 23:12:55.61 9xb2C49y.net
>>358
六角形のスプライト用意してタイルマップでいけるんじゃないかな
378:名前は開発中のものです。
18/08/05 23:27:14.09 vRj4lIfD.net
>>358
この質問お願いします
379:名前は開発中のものです。
18/08/05 23:28:36.82 UInf7wuX.net
>>358
アセットがあればヘックスマップも作れると思いますよ
380:名前は開発中のものです。
18/08/06 01:10:06.69 shQcteCQ.net
>>363
>>365
ありがとう
調べてみます
381:弟子
18/08/06 01:30:05.16 b1K9g2Lf.net
>>366
最新のUnityになってからかどうかわかりませんが
自分のUnity2018.2.2f1の環境だと、2D ObjectにHexagonal TileMap
というのがあって
こんな感じ
URLリンク(i.gyazo.com)
URLリンク(i.gyazo.com)
ちょっと配置しただけなので隙間とかあるけど、調整すればいけるんじゃないかな
382:THE・ステップアップ先生
18/08/06 05:22:26.33 rSQN2TxT.net
>>359
説明を見てる限りだと結構Unity式で出来てるように感じるよ?
"属性"の部分を"レイヤー機能"に置き換えれそうなくらいじゃないかな。
既にレイヤー機能を使っているようなら気にしないでくださいな。
自分もUnity式はまだまだ発展途上であり完璧に理解してるわけではありませんよ。
またそれが面白いのです。
FCマリオを作るとしたら自分は以下をUnity式でやると思います
・当たり判定全般はUnityのコライダーとレイヤー機能に任せる(プレイヤー⇔マップ、プレイヤー⇔アイテム、プレイヤー⇔敵、敵⇔敵、敵⇔マップ)
・Sceneファイル1つにつき1ステージとファイルを分けて、ステージ遷移はSceneファイルの変更で行いたい
・Unityエディッタ上で直接マップ構成や敵の配置をやってしまい、別途BGエディッター見たいなものを使用しない
・つまりmainループ式だと行う必要があった背景などの画面スクロール処理は一切不要。カメラ移動に任せる。
これ以外はmainループ式でやるかな?
当たり判定部分は物理エンジンを使うか否かで多少変わってくるかもです。
実際に作ってみるとこのように行かない場面も多々出てくるかもしれませんが。
うまくまとめればUnityエディッタ=ちょっと複雑なマリオメーカー的な気分で作れちゃうかもしれませんね。
383:名前は開発中のものです。
18/08/06 07:24:48.60 kCqrej/c.net
画像付きで解説優しい!
2018.2にアップデートしたらヘックスタイルマップが追加されました
物凄くタイミングが良かった
ありがとうございます!
384:名前は開発中のものです。
18/08/06 20:49:47.90 elMC6huJ.net
>>359
横からだが、俺自身も昔ながらのゲーム開発からUnity開発へ移行した口だけど、結局のところ昔ながらのことをしないとパフォーマンス稼げないことが多々出てくるから、どっちのやり方も知っていいとこ取りをするのがベストだと思っている
あとチュートリアルはお作法というより機能や出来ることの説明がメインだから、設計という意味ではあまり参考にならないかと
385:名前は開発中のものです。
18/08/06 23:48:58.31 pjnXk9Sd.net
>>368
ありがとうございます!
モチベーションが上がって来ました。
それを参考に私も頑張ってみます。
>>370
>機能や出来ることの説明がメインだから
そうなんですよ、Unityモデルでの昔ながらの作成方法な
設計の参考になるものが皆無なんで、困ってます。
386:名前は開発中のものです。
18/08/07 05:33:02.72 qUQ4iHYs.net
シーンに空のオブジェクト置いてfixedupdateを
mainループとみなしてそこからすべて操作するだけ
387:名前は開発中のものです。
18/08/07 07:23:29.46 7twjrWhc.net
unityでそのままの方法でできるんだから悩む必要ないぞ
スクリプトをプレイヤーにつけるか敵につけるか空のオブジェクトにつけるかの違いだから
チュートリアルみたいに分散させるとどこに書いたかわからなくなって混乱の元になるし
一箇所に集めて配列管理でいいんじゃね