質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Photon Cloud

Photon Cloudは、オンラインゲーム開発向けネットワークエンジン。リアルタイムマルチプレイ通信のプラットフォームであるPhotonの一つです。ネットワーク通信によるオンラインゲームを開発・運営するために必要なツールがサーバー環境に構築されています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

0回答

1360閲覧

Unity prefabで生成したオブジェクトのスクリプトを非アクティブにしたい (NullReferenceExceptionが表示される)

Jejeje

総合スコア38

Photon Cloud

Photon Cloudは、オンラインゲーム開発向けネットワークエンジン。リアルタイムマルチプレイ通信のプラットフォームであるPhotonの一つです。ネットワーク通信によるオンラインゲームを開発・運営するために必要なツールがサーバー環境に構築されています。

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2020/11/22 14:17

前提・実現したいこと

オンラインでロビーに参加するとバトルシーンに遷移し,Sceneスクリプトが起動しキャラクターが生成される。プレイヤーが集まりゲームが開始するまでキャラクターを操作できないようにしたいのでキャラクターについているスクリプトを非アクティブ状態にしたい

発生している問題・エラーメッセージ

C#

1NullReferenceException: Object reference not set to an instance of an object 2Scene.Start () (at Assets/C#script/Scene.cs:41) 3 441行はgameObject1.GetComponent<move_Online>().enabled = false;です

該当のソースコード

C#

1using UnityEngine; 2using UnityEngine.SceneManagement; 3using Photon.Pun; 4 5public class Scene : MonoBehaviourPunCallbacks 6{ 7 GameObject gameObject1; 8 GameObject gameObject2; 9 10 void Awake() 11 { 12 var v = new Vector3(-5.5f, 0.5f, -3.5f); 13 var v2 = new Vector3(5.5f, 0.5f, 3.5f); 14 15 if (!PhotonNetwork.IsConnected) //Phootnに接続されていなければ 16 { 17 SceneManager.LoadScene("MultiMode"); //ログイン画面に戻る 18 return; 19 } 20 if (PhotonNetwork.PlayerList.Length == 1) 21 { 22 PhotonNetwork.Instantiate("GamePlayer", v, Quaternion.identity); 23 24 } 25 else if (PhotonNetwork.PlayerList.Length == 2) 26 { 27 PhotonNetwork.Instantiate("GamePlayer2", v2, Quaternion.identity); 28 } 29 30 } 31 32 void Start() 33 { 34 gameObject1 = GameObject.Find("GamePlayer"); 35 Debug.Log(gameObject1); 36 gameObject1.GetComponent<move_Online>().enabled = false; 37 gameObject1.GetComponent<Shoot_Online2>().enabled = false; 38 39 gameObject2 = GameObject.Find("GamePlayer2"); 40 gameObject2.GetComponent<move_Online>().enabled = false; 41 gameObject2.GetComponent<Shoot_Online2>().enabled = false; 42 43 } 44}

試したこと

同じStart()内でGamePlayerの生成とコンポーネントの取得をしているのが原因なのではないかと思い,
void Awake()で生成,void Start()でオブジェクトを取得しそのスクリプトを取得しようとしたが同じ結果になった

補足情報(FW/ツールのバージョンなど)

Unity 2019.4.11f

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ayousanz

2020/11/23 04:12

40行目のDebug.LogではNullではないものが表示されていますか?
Jejeje

2020/11/24 17:29

すみません、解決しました。回答していただきありがとうございました。
ayousanz

2020/11/25 04:17

自己解決済みして,何が問題だったのかを書いておいてください ほかの方の役に立つかもしれません
Jejeje

2020/11/25 08:50

別の方法を用いたことでこの過程をする必要が無くなっただけで この問題自体は解決していないんですよね。。。 プレイヤーのID取得方法さえ分かればできたことを物凄い遠回りな方法で再現しようとしていたのですが簡単なID取得方法が分かったのでもうこれをやる必要は無くなりました。お騒がせしてすみませんでした
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問