質問編集履歴

2 スクリプトの追記

Harumaro

Harumaro score 68

2019/05/20 12:42  投稿

新しく作成したシーンに他のシーンで作ったはずのスクリプトが適用されてしまう
Unityで新しいシーンを作成したところ、他のシーンのオブジェクトにアタッチしたはずのスクリプトがなぜが反映されてしまいます。最初はオブジェクトも反映されていたので、マルチシーンエディティングによるものなのかなと思ったのですが、ゲーム起動後も、やはり他のシーンで作ったスクリプトは適用されていました。(ロックカーソルなど)どうすれば適用できないようにできるのでしょうか?
追記
##現在のヒエラルキーの様子
![](5051cd896f2454f59fd3c1db3db8f2b2.png)
##流れ
最初に「MainGame」というシーンを作成
視点操作できるTPSゲームをプログラム
タイトル画面を作りたいと思い、新たに「Menu」というシーンを作成
Menuは簡単なGUIなのでスクリプトは何も入れていない
しかし、ゲームを開始したところ「MainGame」にある「MouseControll」というオブジェクトにアタッチしたはずのスクリプトが
「Menu」のシーンに反映されていた(ここでは最初の質問にも申し上げました、カーソルロックやカーソルの非表示などで判断いたしました。カーソルのプログラムも「MouseControll」にアタッチしたスクリプトに書きました。)
「Menu」を開いている最中は、「MainGame」のシーンはアンロードされていました。
問題のオブジェクトについているスクリプト  
```C#   
using System.Collections;  
using System.Collections.Generic;  
using UnityEngine;  
using UnityEngine.SceneManagement;  
 
public class Controller : MonoBehaviour  
{  
   [SerializeField] private float minY = -85.0f;  
   [SerializeField] private float maxY = 85.0f;  
   [SerializeField] private float speedX = 10.0f;  
   [SerializeField] private float speedY = 10.0f;  
   [SerializeField] private float rotationX = 0.0f;  
   [SerializeField] private float rotationY = 0.0f;  
   [SerializeField] private float movespeed = 1300.0f;  
   [SerializeField] private float uppower = 1300.0f;  
   [SerializeField] private bool xInversion, yInversion;  
   public Rigidbody rb;  
 
   void Start()  
   {  
 
       rotationX = transform.localEulerAngles.y;  
       if (rotationX > 180f)  
           rotationX -= 360f;  
       rotationY = transform.localEulerAngles.x;  
       if (rotationY > 180f)  
           rotationY -= 360f;  
 
       rb = GetComponent<Rigidbody>();  
 
       string name = SceneManager.GetActiveScene().name;  
 
       if (name == "MainGame")  
       {  
           Cursor.lockState = CursorLockMode.Locked; //カーソルをロック  
           Cursor.visible = false; //カーソルを非表示  
       }  
   }  
 
   void Update()  
   {  
 
       rotationX += Input.GetAxis("Mouse X") * speedX;  
       rotationY -= Input.GetAxis("Mouse Y") * speedY;  
       rotationY = Mathf.Clamp(rotationY, minY, maxY);  
       transform.localEulerAngles = new Vector3(rotationY, rotationX, 0f);  
 
       if (Input.GetKey(KeyCode.Escape)) //Menuの表示  
           SceneManager.LoadScene("Menu");  
 
   }  
   void FixedUpdate()  
   {  
       if (Input.GetKey(KeyCode.W))  
           rb.AddForce(transform.forward * movespeed);  
       if (Input.GetKey(KeyCode.A))  
           rb.AddForce(-transform.right * movespeed);  
       if (Input.GetKey(KeyCode.S))  
           rb.AddForce(-transform.forward * movespeed);  
       if (Input.GetKey(KeyCode.D))  
           rb.AddForce(transform.right * movespeed);  
       if (Input.GetKey(KeyCode.Space))  
           rb.AddForce(transform.up * uppower);  
       if (Input.GetKey(KeyCode.LeftShift))  
           rb.AddForce(-transform.up * uppower);  
   }  
}  
 
```  
 
##エラー
エラーは何も起きていません
  • C#

    11264 questions

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

  • Unity

    7409 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    2505 questions

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

1 文章の追記

Harumaro

Harumaro score 68

2019/05/17 20:02  投稿

他のシーンのスクリプトが適用されてしまう
新しく作成したシーンに他のシーンで作ったはずのスクリプトが適用されてしまう
Unityで新しいシーンを作成したところ、他のシーンのオブジェクトにアタッチしたはずのスクリプトがなぜが反映されてしまいます。最初はオブジェクトも反映されていたので、マルチシーンエディティングによるものなのかなと思ったのですが、ゲーム起動後も、やはり他のシーンで作ったスクリプトは適用されていました。(ロックカーソルなど)どうすれば適用できないようにできるのでしょうか?
Unityで新しいシーンを作成したところ、他のシーンのオブジェクトにアタッチしたはずのスクリプトがなぜが反映されてしまいます。最初はオブジェクトも反映されていたので、マルチシーンエディティングによるものなのかなと思ったのですが、ゲーム起動後も、やはり他のシーンで作ったスクリプトは適用されていました。(ロックカーソルなど)どうすれば適用できないようにできるのでしょうか?
追記
##現在のヒエラルキーの様子
![](5051cd896f2454f59fd3c1db3db8f2b2.png)
##流れ
最初に「MainGame」というシーンを作成
視点操作できるTPSゲームをプログラム
タイトル画面を作りたいと思い、新たに「Menu」というシーンを作成
Menuは簡単なGUIなのでスクリプトは何も入れていない
しかし、ゲームを開始したところ「MainGame」にある「MouseControll」というオブジェクトにアタッチしたはずのスクリプトが
「Menu」のシーンに反映されていた(ここでは最初の質問にも申し上げました、カーソルロックやカーソルの非表示などで判断いたしました。カーソルのプログラムも「MouseControll」にアタッチしたスクリプトに書きました。)
「Menu」を開いている最中は、「MainGame」のシーンはアンロードされていました。
##エラー
エラーは何も起きていません
  • C#

    11264 questions

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

  • Unity

    7409 questions

    Unityは、ユニティテクノロジーが開発したゲームエンジンです。 主にモバイルやブラウザ向けのゲーム製作に利用されていましたが、3Dの重力付きゲームが簡単に作成できることから需要が増え、現在はマルチプラットフォームに対応しています。 言語はC言語/C++で書かれていますが、C#、JavaScript、Booで書かれたコードにも対応しています。

  • Unity3D

    2505 questions

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

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る