Unityで新しいシーンを作成したところ、他のシーンのオブジェクトにアタッチしたはずのスクリプトがなぜが反映されてしまいます。最初はオブジェクトも反映されていたので、マルチシーンエディティングによるものなのかなと思ったのですが、ゲーム起動後も、やはり他のシーンで作ったスクリプトは適用されていました。(ロックカーソルなど)どうすれば適用できないようにできるのでしょうか?
追記
##現在のヒエラルキーの様子
##流れ
最初に「MainGame」というシーンを作成
視点操作できるTPSゲームをプログラム
↓
タイトル画面を作りたいと思い、新たに「Menu」というシーンを作成
Menuは簡単なGUIなのでスクリプトは何も入れていない
↓
しかし、ゲームを開始したところ「MainGame」にある「MouseControll」というオブジェクトにアタッチしたはずのスクリプトが
「Menu」のシーンに反映されていた(ここでは最初の質問にも申し上げました、カーソルロックやカーソルの非表示などで判断いたしました。カーソルのプログラムも「MouseControll」にアタッチしたスクリプトに書きました。)
「Menu」を開いている最中は、「MainGame」のシーンはアンロードされていました。
問題のオブジェクトについているスクリプト
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.SceneManagement; 5 6public class Controller : MonoBehaviour 7{ 8 [SerializeField] private float minY = -85.0f; 9 [SerializeField] private float maxY = 85.0f; 10 [SerializeField] private float speedX = 10.0f; 11 [SerializeField] private float speedY = 10.0f; 12 [SerializeField] private float rotationX = 0.0f; 13 [SerializeField] private float rotationY = 0.0f; 14 [SerializeField] private float movespeed = 1300.0f; 15 [SerializeField] private float uppower = 1300.0f; 16 [SerializeField] private bool xInversion, yInversion; 17 public Rigidbody rb; 18 19 void Start() 20 { 21 22 rotationX = transform.localEulerAngles.y; 23 if (rotationX > 180f) 24 rotationX -= 360f; 25 rotationY = transform.localEulerAngles.x; 26 if (rotationY > 180f) 27 rotationY -= 360f; 28 29 rb = GetComponent<Rigidbody>(); 30 31 string name = SceneManager.GetActiveScene().name; 32 33 if (name == "MainGame") 34 { 35 Cursor.lockState = CursorLockMode.Locked; //カーソルをロック 36 Cursor.visible = false; //カーソルを非表示 37 } 38 } 39 40 void Update() 41 { 42 43 rotationX += Input.GetAxis("Mouse X") * speedX; 44 rotationY -= Input.GetAxis("Mouse Y") * speedY; 45 rotationY = Mathf.Clamp(rotationY, minY, maxY); 46 transform.localEulerAngles = new Vector3(rotationY, rotationX, 0f); 47 48 if (Input.GetKey(KeyCode.Escape)) //Menuの表示 49 SceneManager.LoadScene("Menu"); 50 51 } 52 void FixedUpdate() 53 { 54 if (Input.GetKey(KeyCode.W)) 55 rb.AddForce(transform.forward * movespeed); 56 if (Input.GetKey(KeyCode.A)) 57 rb.AddForce(-transform.right * movespeed); 58 if (Input.GetKey(KeyCode.S)) 59 rb.AddForce(-transform.forward * movespeed); 60 if (Input.GetKey(KeyCode.D)) 61 rb.AddForce(transform.right * movespeed); 62 if (Input.GetKey(KeyCode.Space)) 63 rb.AddForce(transform.up * uppower); 64 if (Input.GetKey(KeyCode.LeftShift)) 65 rb.AddForce(-transform.up * uppower); 66 } 67} 68
##エラー
エラーは何も起きていません
回答1件
あなたの回答
tips
プレビュー