①シーンに配置されたプレハブにスクリプトをアタッチ
②スクリプトの変数をEditorWindowから変更する(シーンは再生中ではない)
この操作をしても、変更された値がシーンの再生開始時に破棄され、プレハブの値に戻されてしまいます。
インスペクタから手動で変更した場合は正しく保持されます。これはなぜでしょうか。
変更をEditorWindowから保存する方法はありますか?
以下のスクリプトで再現できます。
ご回答よろしくお願いします。
Unity5.6.1f1
C#
1//TestObjectという名前のオブジェクトにアタッチ、プレハブ化してください 2using UnityEngine; 3 4public class TestClass : MonoBehaviour { 5 public string hensu="編集前"; 6 7 void Start(){ 8 Debug.Log(hensu); 9 } 10} 11
C#
1using UnityEngine; 2using UnityEditor; 3 4public class TestWindow : EditorWindow 5{ 6 [MenuItem ("Window/TestWindow")] 7 8 public static void ShowWindow () { 9 EditorWindow.GetWindow(typeof(TestWindow)); 10 } 11 12 void OnGUI () { 13 if( GUI.Button ( new Rect(10,10,200,50), "テスト") ){ 14 GameObject G = GameObject.Find("TestObject"); 15 TestClass T=G.GetComponent<TestClass>(); 16 T.hensu="編集後"; 17 } 18 } 19}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/05/23 12:56