[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild1 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
84(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 16:45:01.72 ID:07W788OP(3/3) AAS
>>82
私のような初心者にサンプルまでつけていただいて…大変恐縮です
ありがとうございます
サンプルを参考に頑張ってみます
85: 名前は開発中のものです。 [sage] 2018/06/27(水) 16:45:40.74 ID:mQnQFUMP(3/3) AAS
っていうかキャラクタの移動、って質問者が言ってるのにactiveの切り替えでサンプル作るってすごい発想だな
移動を歩いてるよう見せたいとかしたくなったら破綻すんじゃん
86(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 17:40:42.14 ID:Fqeg8KbG(1) AAS
瞬間移動ならいいんじゃね。
直接座標いじるのもいいが、決まった座標かつ少数の移動先なら有効っちゃ有効。
慣れるまでならTranaformいじるよりこっちの方が混乱しないだろ、多分。
87(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 18:06:05.29 ID:b8c+3yQw(1) AAS
漠然と質問なんだから良いんだよ。
キー入力の時、押しっぱとかの対応を書こうとしたけど、要らぬお世話と判断して辞めた。
今はこれぐらいで充分だとね。
88(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 18:40:50.61 ID:bK0Eiav/(1/2) AAS
>>86-87
何故「弟子 ◆rZPPjYuxmQ」を外して返信するんだ?
何か不都合でもあるのか
分かりづらいのだからコテハン付けたまま同じ端末で書き込んでくれないか
89(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 19:58:04.86 ID:BDZcCUCN(1) AAS
>>88
禁止事項に違反してますね
荒らしとして通報させて貰います
この板全体に書き込みできなくなりますよ
90: 名前は開発中のものです。 [sage] 2018/06/27(水) 21:05:06.42 ID:bK0Eiav/(2/2) AAS
>>89
>■注意事項
>「アセットを買えば」「チュートリアルやれ」等禁止、初心者の質問疑問に初心者が答えるスレ、ググれじゃなく何のキーワードでググったらいいかを書く
どこのどの部分に違反しているの?
ちょっと見てる人全員に分かるように詳しく説明してくれない?
91(1): 名前は開発中のものです。 [sage] 2018/06/27(水) 22:34:23.72 ID:kjyTyUbj(1) AAS
EditorフォルダにBuildPipeline.BuildAssetBundlesのscriptをいれて
プレハブを選択してメニューからBuildAssetBundlesをしてアセットを作りました
UnityStudioから覗くとScene HierarchyはGameObjectだらけ(1つめの画像)
Asset ListのTexture2Dを選択しても何も表示されません。(2つめの画像)
何が問題なんでしょうか。
https://i.imgur.com/nuqT3uz.jpg
https://i.imgur.com/OJ145K6.jpg
92(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/27(水) 23:19:29.07 ID:rsgWo6Ac(4/4) AAS
>>84
めげずに頑張ってください、私で分かる事であればお答えしますので
一応、スムーズにムーブするサンプルです(画像だけ)
ソース欲しいならどっかにうpしますね
https://imgur.com/a/xmOYSqk
>>91
ここは素人だらけなので、すごく難しい質問ぽいですね、さくっとアセットバンドルのところを斜め読みしたのですが
ビルドしたのを取り込んで使う場合ってAssetBundle.LoadAsset とかでロードするんでは?
こちらのスレだと解決には厳しいかもしれません
93(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 01:28:30.00 ID:r9ZDJtDU(1) AAS
>>92
研究したいのでソース見たいです
よろしくお願いします
94: 名前は開発中のものです。 [sage] 2018/06/28(木) 06:22:42.46 ID:/+kZ1wVw(1/9) AAS
スムーズに動かしたいならTransrateかAddforce使う。
物理挙動も取り入れるならAddforceで物理はどうしても取り入れたくないならTransrateと使い分ける。
サンプル丸コピじゃ成長しないし、少なくとも俺の解説よりは分かると思うから、少しはググるといいと思うよ。
95: 名前は開発中のものです。 [sage] 2018/06/28(木) 06:25:01.98 ID:/+kZ1wVw(2/9) AAS
すまんスペル間違えてた。
TransrateじゃなくてTranslateな
96: 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 12:00:33.21 ID:/UzN8HYz(1/9) AAS
>>93
リファクタリングして短くなったのでSSであげますね
まぁまたケチ付けたい人が色々と文句ダケ言ってくるかもしれないけど気にせずに
まずは、ソース丸パクリでもどう動いているのか理解する事が重要で
その後に、少し修正してみて、例えば2つ先まで動くとかね
あと今は右、左の最大値は入れてないのでどこまでも行きます
そこは自分で最大値3以上は行かないという感じで修正してみてください
自分も最初は雑誌のBASICを打ち込んで覚えたので丸写しは有効な手段だと思います
https://i.gyazo.com/3bd49202b10be38565706a225ef0817e.png
https://i.gyazo.com/61e8b2b63be8983c9895bc7807c3592e.png
変数の説明すると
dir 方向
limit 移動限界
移動後、X座標が少数になるのはdeltaTimeを掛けているからなので、まぁこの辺も移動にぴったしな整数にするという事も勉強になる修正かなと思います
97(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 14:20:39.58 ID:9SECcI4o(1/2) AAS
んじゃ、せっかくだからケチつけてみようかな。
サンプルなんだから分かりやすく書いたほうがいいよ
ってことで、v2posのスコープが広すぎる。Update関数内のローカル変数でいい。ってかv2pos.xしか使ってないんだからfloat pxにしとけばいいだろ。理解するのに30秒かかったわ。(変数生成負荷を嫌ったんだろうけど、見やすさは重要だと思うんだ)
てかlimitって名前が分かりにくい。x座標の目的地なんだからtargetXとかでいいんでね?30秒(略)
98(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 14:28:13.80 ID:9SECcI4o(2/2) AAS
ついでに、dirこそUpdate関数内ローカルでいい。
int dir=tfTriangle.position.x<limit?1:-1;
って書いとけばcheckrightのなかでdirをゼロにする必要もない。
99(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 14:29:20.15 ID:/UzN8HYz(2/9) AAS
>>97
これ悪い例ね
pxにして直接potisionに代入できないから、たぶんこの人は作ったこと無くて覚え立てのスコープとか使ってわざわざ自分の才能のなさを書きにきてるのね
そんな時間あるなら自分流のサンプル作って出せばいいのに
100(2): 名前は開発中のものです。 [sage] 2018/06/28(木) 14:39:42.06 ID:UPpeKgHO(1/6) AAS
つーかbasicからやってるような人間がリファクタリングして他人に見せる用として提示するコードがこれなの?
変数大文字から始めるわ、ハンガリアンつけるわでびっくりなんだけど
初学者のため思うならこそちゃんとしたコード見せてあげるべきなのに
101(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 14:53:19.52 ID:/+kZ1wVw(3/9) AAS
>>100
ハンガリアンもスネークも人それぞれだろ。初心者スレでそんな細かいことで煽るなよ。
こういう記法がいいと思うってアドバイスだけでいいじゃん。
ちなみに俺はローワーキャメルが好きだ。
記法についてはここな。
https://www.google.co.jp/amp/s/earley.jp/blog/development/camelcase-hungariannotation-snakecase-programming/amp/
102: 名前は開発中のものです。 [sage] 2018/06/28(木) 14:56:43.12 ID:UPpeKgHO(2/6) AAS
vector2.zero知ってるならrightやleftも使おうよ
なんすか、dir=1って
なんでv2pos.xに代入したあとcheck関数呼んでからv2posを代入してんの?
check関数でなにかしてるわけでもないならそいつらあとでいいよね?
check関数切り替えてるけど切り分け方がよくわからん
キー入力、移動先計算、移動方向判定、移動
移動方向判定だけなんで関数化したの?checkって名前もどうかと思うけど、まぁ命名はいいや
103(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 14:57:38.47 ID:/+kZ1wVw(4/9) AAS
ハンガリアンに否定的なサイトしか見つからなかったが、ハンガリアンにも間違ったコードが間違って見えるって長所があるからな
104: 名前は開発中のものです。 [sage] 2018/06/28(木) 14:59:54.67 ID:UPpeKgHO(3/6) AAS
>>101
人それぞれだけどサンプルとして提示するならせめて公式に合わせるべきでは?
このコードを参考にしてください、って初心者に提示してるんだよ?
if使うんですか?ってレベルの初心者に
105: 名前は開発中のものです。 [sage] 2018/06/28(木) 15:01:01.11 ID:UPpeKgHO(4/6) AAS
>>103
システムハンガリアンとかでググればハンガリアンの本来の意味を解説したとこ見つかるよ
間違ってもGameObjectだからgoってつけようなんて発想にはならん
106(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 15:11:47.18 ID:h3xp0Kjr(1) AAS
>>99
変数生成負荷とか言ってるんだからfloat型pxをxにしたnew Vector2を生成しろってことだろ
107: 名前は開発中のものです。 [sage] 2018/06/28(木) 15:17:43.19 ID:K46AO26G(1) AAS
俺、駄目なハンガリアンの使い方してるわw
勉強になるなぁ
108(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 15:20:04.03 ID:/UzN8HYz(3/9) AAS
大漁だなw
サンプル作れないけど文句しか言えない人がこんなに居るんだねー
一応ここは素人が素人に答えるスレなので、素人にも分かるようにみなさんもサンプル提示すればいいと思うよ
きっと頭いいから見やすくて分かりやすいサンプル提示してくれるんだろうなぁ
だよねー
まさか、文句だけ言ってプログラム書けないとかないよね?
109: 名前は開発中のものです。 [sage] 2018/06/28(木) 16:01:20.93 ID:qauh58MA(1) AAS
上のサンプルで充分だろ。
揚げ足とってウダウダ言っても、質問者の為にならんぞ。ほんとケチだけは立派なんて頭悪すぎるから辞めなよ。
110(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 16:07:14.65 ID:/+kZ1wVw(5/9) AAS
>>108
俺のスパゲティーコードでいいならのせるぞ
111(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 16:07:56.12 ID:/UzN8HYz(4/9) AAS
最後のサンプル
Unityという事でアニメにして動かしてみた
まぁこういう事も出来るという事で…
https://i.gyazo.com/757bba69607b381739ab1976c078cf09.png
https://i.gyazo.com/17843bf97b820b605fec6434d4a2b9b5.png
https://imgur.com/a/xUWY8E3
つまり何が言いたいかというと、一つのやりたいことを行うのに沢山のやり方があって
そのどれをやってもいいしコードの書き方も色々とあるわけさ
まぁ仕事として他人と共同で作成とかになるとコード規約とか出てくるけど
まぁこんなとこでホビーとしてやる分には、まず動かしてみる事が一番大事
口だけで文句言うのが一番進歩もしないって事よ
112: 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 16:11:42.18 ID:/UzN8HYz(5/9) AAS
>>110
是非是非、他人のコードはいい勉強になりますので見て見たいです
自分では思ってもみない「気づき」が必ずあるので
>>111
public Transform trTriangle;
private void Awake()
{
trTriangle = GetComponent<Transform>();
}
これ使ってないので外すの忘れました^^;
113: 名前は開発中のものです。 [sage] 2018/06/28(木) 16:42:26.57 ID:UPpeKgHO(5/6) AAS
111が初心者向けとしてのサンプルとしては一番良いと思う
なんでactiveの切り替えなんてトリッキーとも取れるような手法を一番に持ってきたんだろう
animatorだと他の要素を加えるときに制約になる可能性があるから、別手法として96みたいにすることもできるって流れが普通だと思うけど
114: 名前は開発中のものです。 [sage] 2018/06/28(木) 17:06:10.17 ID:/+kZ1wVw(6/9) AAS
とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
https://i.imgur.com/Cor5zzP.png
115(2): 名前は開発中のものです。 [sage] 2018/06/28(木) 17:06:14.63 ID:/+kZ1wVw(7/9) AAS
とりあえずてきとうに作った。
自分でもクソコード書いてるかわからんからどんどん指摘してくれ。よくない癖とかついてそうで怖いからな。
画面内に収まるようにもしてみた。
https://i.imgur.com/Cor5zzP.png
116: 名前は開発中のものです。 [sage] 2018/06/28(木) 17:07:01.22 ID:/+kZ1wVw(8/9) AAS
うわ、連投すまん。
117: 名前は開発中のものです。 [sage] 2018/06/28(木) 17:17:38.71 ID:UPpeKgHO(6/6) AAS
>>115
特に気になるとこ無い気がする
min maxは画面サイズが変更されたときに再計算すればいいじゃないとか思ったけど、この程度の処理気にするもんでも無いし
118(2): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 17:42:03.28 ID:/UzN8HYz(6/9) AAS
>>115
GetAxis便利ですよねー
ただ今回の最初の要求って>>79なので上下いらないかなと思うのです
それと、位置移動なんですが、これって指定位置で止まるんでしょうか?
ちなみに自分はSerializeFieldの使い方知らないのですけど
TransformがPrivateなのですが、これってどこで指定するんでしょうか?
インスペクタじゃ出来ないですよね?
119: 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 17:44:41.51 ID:/UzN8HYz(7/9) AAS
あ、あとspeedもSerializeFieldになってますけど
ただこちらも初期値入ってないけど、もしかしてSerializeFieldにするとどっかで初期化されるというか
アタッチしたオブジェクトの何かを持ってきてくれるのでしょうか?
ちょっと自分にはわからない事が多いかもしれません><
120(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 17:55:42.78 ID:/+kZ1wVw(9/9) AAS
>>118
SerializeFieldはprivateでもインスペクタで値を設定できるようにする属性だよ。
publicにしたらどこから値が変えられるかわからないからprivateにしてるんだけど、それじゃインスペクタで参照できないからこの属性で強制的にシリアライズしてる。
121: 名前は開発中のものです。 [sage] 2018/06/28(木) 18:57:50.31 ID:H6a6imyl(1) AAS
>>118
止まるというより2点で指定された長方形区画から外れると枠上に移動するようになってないか
122(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 19:22:46.38 ID:/UzN8HYz(8/9) AAS
>>120
なるほど、これは便利な機能ですね!勉強ななりました!
ありがとう
123: 名前は開発中のものです。 [sage] 2018/06/28(木) 19:37:21.68 ID:TZKnsOc7(1) AAS
>>106
俺が反論しようとしたポイント先取りするなよwww分かってくれてありがとう!
>>98のコードだと振動しちゃうので、そっち突っ込まれるかなと思ったけど、検討違いな突っ込みだったのでびっくりだよw
124: 名前は開発中のものです。 [sage] 2018/06/28(木) 21:57:18.70 ID:cx/Kc4dr(1/2) AAS
>>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);}
}
}
125: 名前は開発中のものです。 [sage] 2018/06/28(木) 22:00:25.96 ID:cx/Kc4dr(2/2) AAS
floatにする必要なかったな
126(1): 名前は開発中のものです。 [sage] 2018/06/28(木) 23:02:09.99 ID:pfPaTp9f(1) AAS
>122 弟子 ◆rZPPjYuxmQ 2018/06/28(木) 19:22:46.38ID:/UzN8HYz
なんでコイツ質問スレ乱立してんの?
【ゲームエンジン】Unityなんでも質問スレpart1
1 名前:名前は開発中のものです。 2018/06/28(木) 15:25:16.78 ID:/UzN8HYz
127(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/06/28(木) 23:40:04.36 ID:/UzN8HYz(9/9) AAS
>>126
そっちのスレはなんでもありのスレ
ここは素人が答えるスレで注意事項がある
それぐらい読めるでしよ?
128: 名前は開発中のものです。 [sage] 2018/06/29(金) 01:26:58.57 ID:AOmIYWRR(1/2) AAS
>>127
そういうのを荒し行為、迷惑行為って言うんだよ
学習しなよ
「スレを立てる時は同じような話題のスレを乱立させないでください」という5ch利用の基本注意書きがある
それくらい読めるでしょ?
129: 名前は開発中のものです。 [sage] 2018/06/29(金) 01:29:50.68 ID:AOmIYWRR(2/2) AAS
この3人完全に荒しだな
菩薩@太子
弟子 ◆rZPPjYuxmQ
ダーク王鍬大使 ◆SoVpkB15jY
マジ迷惑すぎる
130: 名前は開発中のものです。 [sage] 2018/06/29(金) 04:22:03.78 ID:H1gqcYbG(1) AAS
ここは初心者が困惑するスレですか?
131: 名前は開発中のものです。 [sage] 2018/06/29(金) 04:44:21.40 ID:B66gImoO(1) AAS
自分より初心者の奴にマウントを取りたいが為に「弟子」が立てた初心者専用スレ。
残念ながらマウントをとられてしまったので、そいつらを追い出すために再び別の質問スレを立てる。
以後、糞コテ「弟子」の隔離スレとなった。
132: 名前は開発中のものです。 [sage] 2018/06/29(金) 10:15:45.99 ID:KJpjNVGQ(1) AAS
質問に答えてくれるスレなら何でもいいんだが
133: 名前は開発中のものです。 [sage] 2018/07/03(火) 09:46:10.78 ID:AtrhXQ0j(1) AAS
adsでインプレッションが150くらいで$15ってついてたけどそんなけ儲けが出たという事ですか?
134(2): 名前は開発中のものです。 [] 2018/07/03(火) 18:42:33.52 ID:DgOGkLki(1/3) AAS
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);
}
なんですが、
135: 名前は開発中のものです。 [] 2018/07/03(火) 18:43:10.13 ID:DgOGkLki(2/3) AAS
で、>>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)
です。
136(1): 名前は開発中のものです。 [] 2018/07/03(火) 18:43:25.91 ID:DgOGkLki(3/3) AAS
なにが間違っていますか?
教えてください。
137: 名前は開発中のものです。 [sage] 2018/07/03(火) 19:01:59.41 ID:L0TgVbu0(1) AAS
>>136
死ねガイジ
138(1): 名前は開発中のものです。 [sage] 2018/07/03(火) 19:58:29.00 ID:bkI+tY6O(1) AAS
エラー出てるのどの行?
139(2): 名前は開発中のものです。 [sage] 2018/07/03(火) 20:02:44.63 ID:m6+Emxdh(1) AAS
titleはちゃんとfindできてるのか?
140: 名前は開発中のものです。 [sage] 2018/07/03(火) 20:16:20.25 ID:BqokYmSM(1) AAS
gameobject.findって非アクティブも検索するんだったっけ?
141: 名前は開発中のものです。 [sage] 2018/07/03(火) 21:28:51.32 ID:Oy6MCkRt(1) AAS
しない
142(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/07/03(火) 22:33:56.89 ID:wgFi8W22(1) AAS
>>134
このコードって恐らく公式の
https://unity3d.com/jp/learn/tutorials/projects/2d-shooting-game/creating-enemies
のコードでしょうか?
だとすると
「弾を撃つ必要がない時はyield break;を使用してコルーチンを終了させます。」
という具合に書いてるので、これを利用するとですね
// canShotがfalseの場合、ここでコルーチンを終了させる
if (spaceship.canShot == false) {
yield break;
}
となってるので、Titleが非表示の時はbreakするようにすればいいのかなぁと思います
143(1): 名前は開発中のものです。 [sage] 2018/07/03(火) 22:52:21.52 ID:L1TMFUeX(1) AAS
すみません
https://assetstore.unity.com/packages/3d/props/small-buttons-and-switches-65964
のアセット使ってトグルボタンぽちぽちしたいのですが、ボタンが動きません
どう使えばいいのでしょうか?
144(1): 名前は開発中のものです。 [] 2018/07/04(水) 00:28:49.31 ID:RvZnsCPI(1/6) AAS
>>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;}
と連続で記載してみました。
が、症状は同じで、まったく弾を撃たなくなってしまいました。
145(2): 名前は開発中のものです。 [] 2018/07/04(水) 00:31:36.06 ID:RvZnsCPI(2/6) AAS
>>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){ ”
この部分みたいです。
146(1): 名前は開発中のものです。 [] 2018/07/04(水) 00:33:02.65 ID:RvZnsCPI(3/6) AAS
ちなみに、エネミーを倒したあとに、警告が出ます。
エネミーを倒すたびに警告が出る状態です。
147: 名前は開発中のものです。 [] 2018/07/04(水) 01:55:12.03 ID:W/Y7Ww/v(1) AAS
/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'' /:::::::/::::::/::::::::::::/:::http://
゙、ii! ゙| i ノ ゝ;;;:::::::::::::::::::;ノ 。 `i //:::::/:::::/::::::::::::/::::::/:::
ヾ!トl ゙i?U i 。l '゛.. ‐ー:::::i | //::::::/::::::/::::::/:::/:::::i!::::::
iiミ! ハ i l ,,,,::: :::;;;;;...{ ° ゙、 //::::http://::::/::::::/:::::/::::i::::ii::
i!ヾ!i ゙、! , ' |::: ::::ヽ ..} |゙ヽ......,.,.,.,,,///://::http://::::/::::://::::i::::リ::
!ヽヾi i゙、 ___,,,/ }:: : ;;;::: ::::::::} レWノ'レi/、//::/:://:/:::/::/:::ハ:i |::
148(1): 名前は開発中のものです。 [] 2018/07/04(水) 06:27:05.10 ID:PcbSJbIy(1) AAS
>>145
titleの中がぬるぽなんじゃ。
取得はどこだ?titleが居るってかactiveの時に取ってる?じゃないとfindで取れないぞ。
149(2): 名前は開発中のものです。 [sage] 2018/07/04(水) 07:46:44.11 ID:TALB3D9+(1) AAS
titleオブジェクトの名前がTitleじゃない(誤記)
Titleを非表示でなくdestroyしている
title取得以前に弾を撃とうとしている又は何度も取得しようとしている
非表示以降に生成されるenemyがある
多分このどれか
>>146見るとenemyが複数回生成されるみたいだから少なくとも最後は引っかかる
150: 名前は開発中のものです。 [] 2018/07/04(水) 10:55:01.63 ID:GdNJLKay(1) AAS
参考にしてみるといいhttps://goo.gl/9pHp9Y
151(1): 弟子 ◆rZPPjYuxmQ [sage] 2018/07/04(水) 11:01:38.37 ID:+Bj9nh1d(1/3) AAS
>>144
>>145
さてでは問題は他でも指摘されているように「Title」オブジェクトがちゃんと指定されているか?
という事で、これの一番簡単な解決は
「public Text Title」 ←これをインスペクタで指定してあげる
(Textを使う場合、Using Unity Engine.UIを指定する)
そうすれば「Start」関数で「title = GameObject.Find("Title"); 」は必要なくなります
恐らく、Findが失敗しているからNullエラーとなているのかと思われますが
Findが成功しているかどうか簡単に見るにはFindの後に「print(title.name)」でもしてみると解ります
152: 弟子 ◆rZPPjYuxmQ [sage] 2018/07/04(水) 11:06:38.82 ID:+Bj9nh1d(2/3) AAS
>>143
有料アセットなので試せないのでなんとも・・・
恐らく記載のバージョンでやってみて動けば、現在の143さんのバージョン違いによる事じゃないかなとしか
153(2): 名前は開発中のものです。 [] 2018/07/04(水) 16:35:34.35 ID:RvZnsCPI(4/6) AAS
>>148
>>149
>>151
destroyしていないですし、
Using Unity Engine.UI無しでも取得できてる箇所もあるのでよくわからず、、
初心者のためか、どうしてもわかりません。
現在のゲームの一式Zipです、Unityで開いていただければ覗けると思います
8Mしか無い小さなファイルですので確認して頂いてよろしいでしょうか?
素材は公式チュートリアルのもので、ソースは2017に合わせて変更しています
https://ux.getuploader.com/zipcodezipcode/download/172
スクリプトフォルダのEnemy.csファイルを確認してほしいです。
コメントで消してます部分がやりたいことです。
なにが間違っているのか、ご指摘頂ければ幸いです。 ◎
Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
154(3): 名前は開発中のものです。 [sage] 2018/07/04(水) 17:28:56.01 ID:30JL9X4X(1) AAS
>>153
見たけど>>149の後半そのままじゃないか、確認してくれよ……
1) プレイヤーの操作でTitleオブジェクトがactiveでなくなる
2) enemyが生成されtitleに代入しようとするもactiveでないオブジェクトはFindで引っかからず空のまま
3) titleの中身がnullの状態で静的でない変数を呼び出したのでNullReferenceExceptionで止まる
155(2): 名前は開発中のものです。 [sage] 2018/07/04(水) 17:33:31.63 ID:s79xjkx+(1) AAS
GameObject.Findはactiveじゃないと使えないんだって
Transform.Findなら使えるかな
156: 名前は開発中のものです。 [] 2018/07/04(水) 18:00:16.94 ID:RvZnsCPI(5/6) AAS
>>154
確認していただき、ありがとうございます。
>Titleオブジェクトがactiveでなくなる
認識不足でした、、そもそもactiveでなくなる、というのは
どういう状態のことですか?
自分はtitle.activeSelfの真偽はtitleの中のひとつのbool変数で
画像(テキスト)の表示非表示のスイッチみたいなものかと
思っていました。。。
title.activeSelf==falseだと、activeでなくなっている
という認識なんですね?
でも、プレイヤーが死亡したあとタイトル文字が出ますよね?
その状態はtitle.activeSelf==tureになって、
activeである状態ではないのでしょうか?
タイトル文字が出ても、敵が残っていると
そいつは前に進んでいます。
その時に、弾を吐かない様にしたかったので
コメントアウトしてるソースを記載しようと思ったんですが。。
自分の認識違いがなんなのか
正してもらえませんでしょうか
157: 名前は開発中のものです。 [] 2018/07/04(水) 18:09:32.59 ID:RvZnsCPI(6/6) AAS
調べてみると
GameObjectのactiveSelfは
ゲームオブジェクトのローカルのアクティブ状態(読み取り専用)
画像の非表示はそのオブジェクト自体の動作を
停止させて非表示にしているのですね、、
しかし、やはり、プレイヤー死亡後は
そのTitleオブジェクトは動き出してるはずで、、
ああ、もしかして、タイトル画面が表示されていて
敵が流れていても、その時にはすでにstart()を通らないから
title = GameObject.Find("Title");ができない状態だから?
158(2): 弟子 ◆rZPPjYuxmQ [sage] 2018/07/04(水) 18:21:48.52 ID:+Bj9nh1d(3/3) AAS
>>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);
}
これで行けるかと思います
一応、インスペクタでタイトルを操作した画面です
https://imgur.com/a/qEZk4ej
159(2): 名前は開発中のものです。 [] 2018/07/05(木) 04:52:10.53 ID:Gem47u68(1) AAS
>>158
ありがとうございます!
あの、質問なんですが今回はManager.csはメインスクリプトかと思うんですが、
要は、メインスクリプト内で取得した各オブジェクトの情報は、
そのほかのスクリプトや各オブジェクトにアセットしたスクリプト内において
public static GameObject 変数名;と記載したあと
以後スクリプト名.変数名で呼び出すことができるようになるのですか??
そして>>158の内容からですと、自分は今回他のスクリプト内で使用する記述方法を
間違っていた(public static GameObjectなど)ということで、
>>154さんや>>155さんの指摘である「activeじゃないから」云々は
今回は当てはまらない、ということですか?
160: 名前は開発中のものです。 [sage] 2018/07/05(木) 06:55:42.38 ID:w7MLipmi(1) AAS
findするタイミングを考えろ
タイトルでる
消える
敵出現
find
敵消える
敵につけたスクリプトだとfindできるタイミングがないんだよ
findするにはスタート時から消えないオブジェクトにスクリプトをつける必要がある
161: 弟子 ◆rZPPjYuxmQ [sage] 2018/07/05(木) 11:09:32.51 ID:9fzjzEJn(1) AAS
>>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さんのところ読んでないのでこれについてはよくわかりません、申し訳ないです
また何かあれば気軽に質問してください、私で分かる範囲でお答えさせていただきます
お互い頑張って作品作っていきましょう!
162: 名前は開発中のものです。 [sage] 2018/07/05(木) 12:38:02.09 ID:MRR7aszu(1) AAS
>>159
いや、直接的には「activeじゃないから取得できない」で合ってる
現状だとenemyが生成されるたびに各個にtitleを取得しようとするから生成のタイミングでtitleが非activeだと取得に失敗してしまう
その解決法として「ゲーム開始直後、activeなうちに一回取得・staticな変数に入れて全てのenemyで使い回せ」というのがこのコテの提案
163: 名前は開発中のものです。 [sage] 2018/07/05(木) 13:06:01.71 ID:30R4+BKt(1) AAS
次作るときは、敵マネージャー.csを作って、敵生成は全てそこでやるといいよ。
164(1): 名前は開発中のものです。 [sage] 2018/07/06(金) 08:47:46.43 ID:bTnJUGNr(1) AAS
PG初心者になります。
C#で、下記のように".psd"の拡張子を指定したいのですが、
大文字、小文字を区別せず指定する場合はどのようにしたらよいでしょうか。
".psd"".PSD"".pSd"でも問題ないようにしたいです。
ご教授お願いいたします。
/// ファイル拡張子【psd】
public const string ExtensionPSD = ".psd";
165(1): 名前は開発中のものです。 [sage] 2018/07/06(金) 09:06:37.75 ID:SbZqPch/(1) AAS
>>164
Unity関係ない気がしなくもないが、自力でやるなら文字を一旦すべて小文字化してから比較すればええんやで
166(1): 名前は開発中のものです。 [sage] 2018/07/06(金) 09:21:09.69 ID:mqKRW7N6(1/3) AAS
指定時じゃなくて比較時に大文字小文字区別なしでString.compare()やったら?
どうしてもって言うならStringじゃなくてregexでやるか。
167(2): 名前は開発中のものです。 [sage] 2018/07/06(金) 09:38:00.97 ID:diIi72QZ(1) AAS
>>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"を小文字化するのですが、どのように書けばよいのでしょうか。
急遽直さなければならず、ご教授いただければ幸いです。
168: 名前は開発中のものです。 [sage] 2018/07/06(金) 09:49:28.52 ID:JxKSLFmq(1) AAS
>>167
ふらっと C#,C♯,C#(初心者用) Part138
2chスレ:tech
169(2): 名前は開発中のものです。 [sage] 2018/07/06(金) 09:55:13.52 ID:mqKRW7N6(2/3) AAS
>>167
試してないけど
downladpatth.ToLowre()でならないかしら
170: 名前は開発中のものです。 [sage] 2018/07/06(金) 09:59:22.23 ID:mqKRW7N6(3/3) AAS
>>169
入力ミス
downladPath.ToLowre()
ね。
171: 弟子 ◆rZPPjYuxmQ [sage] 2018/07/06(金) 10:24:48.79 ID:PYnnNWaZ(1) AAS
ToLower()
https://msdn.microsoft.com/ja-jp/library/e78f86at(v=vs.110).aspx
172: 名前は開発中のものです。 [sage] 2018/07/06(金) 11:01:26.39 ID:ziEtrYYq(1) AAS
文字列 小文字 C#
でググれば一発
知識が少なくてC#なのかUnityなのかわかんなくても結果は同じ
173(1): 名前は開発中のものです。 [] 2018/07/06(金) 20:37:16.86 ID:TxoEW2Q0(1/3) AAS
>>弟子 ◆rZPPjYuxmQ
すみません、>>158ができませんでした。
宣言したあと、
「Manager.title.activeSelf」では
下線のエラーが出てしまいます。
https://dl1.getuploader.com/g/6%7Csaro111/340/000.jpg
確かに考えてみると、
public static GameObject title;の宣言から
使用時にManager.titleでは繋がらない気がしますが、
宣言場所が問題なんでしょうか?
174: >>34 [sage] 2018/07/06(金) 20:50:18.52 ID:gEW+Hr/Q(1/4) AAS
Manager.title の青文字、Managerはいらないよ
175(1): 名前は開発中のものです。 [sage] 2018/07/06(金) 20:52:15.36 ID:gEW+Hr/Q(2/4) AAS
if(Manager.title.activeSelf == false)
じゃなくて
if(title.activeSelf == false)
ね。
176(1): 名前は開発中のものです。 [] 2018/07/06(金) 20:59:50.58 ID:TxoEW2Q0(2/3) AAS
>>175
ありがとうございます。
そう思って、自分も「Manager.」を削ってみたんです。
そしたらちゃんと動くんですが、
敵が弾を一切撃たないままでして、、、
177: 名前は開発中のものです。 [] 2018/07/06(金) 21:00:36.73 ID:TxoEW2Q0(3/3) AAS
やはり、NULLが返ってきてるんです。。
んー
178: 名前は開発中のものです。 [sage] 2018/07/06(金) 21:17:26.03 ID:VvyEnY8t(1) AAS
そのスクリプトをアタッチしたゲームオブジェクトは、もしかして複数ないだろうね?
179: 名前は開発中のものです。 [sage] 2018/07/06(金) 21:23:04.84 ID:HglSf1KI(1/3) AAS
static書く場所間違えてんぞ
宣言すんのはManager.csの中だ
180: 名前は開発中のものです。 [sage] 2018/07/06(金) 21:31:14.20 ID:HglSf1KI(2/3) AAS
Enemy.csの中にはFindがないだろ
Maneger.csの中にFindがあるからそれを使わせてもらうってことだ
ちゃんと理解しろ
181: 名前は開発中のものです。 [sage] 2018/07/06(金) 21:43:49.49 ID:gEW+Hr/Q(3/4) AAS
このEnemy.csが付いているオブジェクトにSpaceshipコンポーネントも付いてんの?
24行目の
Spaceship = GetComponent<Spaceship>();
が気になったんだけど。
Enemy.csをつけてるオブジェクトのinspecter画像あげてみなよ。
182: 名前は開発中のものです。 [sage] 2018/07/06(金) 21:43:58.07 ID:tJg4NY0i(1) AAS
なんだ!その言い方は。自分で作ったこともないクセに生意気なことを言うなよ!
183(1): 名前は開発中のものです。 [sage] 2018/07/06(金) 21:54:18.65 ID:gEW+Hr/Q(4/4) AAS
>>176
あ、前にソースあがってますね。みてきます。
上下前次1-新書関写板覧索設栞歴
あと 819 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.042s