[過去ログ] 【ゲームエンジン】Unity初心者質問スレBuild1 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
154
(3): 名前は開発中のものです。 [sage] 2018/07/04(水) 17:28:56.01 ID:30JL9X4X(1) AAS
>>153
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に合わせて変更しています
外部リンク:ux.getuploader.com

スクリプトフォルダのEnemy.csファイルを確認してほしいです。
コメントで消してます部分がやりたいことです。
なにが間違っているのか、ご指摘頂ければ幸いです。

Rock54: Caution(BBR-MD5:669e095291445c5e5f700f06dfd84fd2)
見たけど>>149
149(2): 名前は開発中のものです。 [sage] 2018/07/04(水) 07:46:44.11 ID:TALB3D9+(1) AAS
titleオブジェクトの名前がTitleじゃない(誤記)
Titleを非表示でなくdestroyしている
title取得以前に弾を撃とうとしている又は何度も取得しようとしている
非表示以降に生成されるenemyがある

多分このどれか
>>146見るとenemyが複数回生成されるみたいだから少なくとも最後は引っかかる
の後半そのままじゃないか、確認してくれよ……
1) プレイヤーの操作でTitleオブジェクトがactiveでなくなる
2) enemyが生成されtitleに代入しようとするもactiveでないオブジェクトはFindで引っかからず空のまま
3) titleの中身がnullの状態で静的でない変数を呼び出したのでNullReferenceExceptionで止まる
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である状態ではないのでしょうか?

タイトル文字が出ても、敵が残っていると
そいつは前に進んでいます。
その時に、弾を吐かない様にしたかったので
コメントアウトしてるソースを記載しようと思ったんですが。。

自分の認識違いがなんなのか
正してもらえませんでしょうか
159
(2): 名前は開発中のものです。 [] 2018/07/05(木) 04:52:10.53 ID:Gem47u68(1) AAS
>>158
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);
}
これで行けるかと思います

一応、インスペクタでタイトルを操作した画面です
画像リンク
ありがとうございます!

あの、質問なんですが今回はManager.csはメインスクリプトかと思うんですが、
要は、メインスクリプト内で取得した各オブジェクトの情報は、
そのほかのスクリプトや各オブジェクトにアセットしたスクリプト内において
public static GameObject 変数名;と記載したあと
以後スクリプト名.変数名で呼び出すことができるようになるのですか??

そして>>158の内容からですと、自分は今回他のスクリプト内で使用する記述方法を
間違っていた(public static GameObjectなど)ということで、
>>154さんや>>155
155(2): 名前は開発中のものです。 [sage] 2018/07/04(水) 17:33:31.63 ID:s79xjkx+(1) AAS
GameObject.Findはactiveじゃないと使えないんだって
Transform.Findなら使えるかな
さんの指摘である「activeじゃないから」云々は
今回は当てはまらない、ということですか?
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さんのところ読んでないのでこれについてはよくわかりません、申し訳ないです

また何かあれば気軽に質問してください、私で分かる範囲でお答えさせていただきます

お互い頑張って作品作っていきましょう!
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.045s