这是我的第一个问题。在这个主题上我找不到任何东西。
我想创建一个编辑器脚本,可以更改附加到GameObject上的脚本中的多个公共布尔值。
我已经将此脚本附加到了一个GameObject上,该GameObject是一个预制件:
脚本运行良好,游戏对象上的布尔值在编辑器中设置正确。但是当我按下PLAY按钮时,这两个布尔开关的值会恢复到应用脚本之前的值。
无论prefab的值如何,这些值都只会恢复到应用编辑器脚本之前的值。
我是否做错了什么,还是这是一个bug?
如果我应用编辑器脚本,将场景保存为新场景,并打开新创建的场景,则这些值也是错误的。
但是,如果GameObject不是prefab,则所有内容都可以完美地工作,并且这些值保持其由编辑器脚本给出的值,即使在启动播放模式后也是如此。
因此,问题仅在使用prefab时存在。
我想创建一个编辑器脚本,可以更改附加到GameObject上的脚本中的多个公共布尔值。
我已经将此脚本附加到了一个GameObject上,该GameObject是一个预制件:
using UnityEngine;
using System.Collections;
public class ScriptWithPublicBools : MonoBehaviour {
public bool b1;
public bool b2;
}
这是我的编辑器脚本:
using UnityEngine;
using System.Collections;
using UnityEditor;
public class EditorHelper : ScriptableObject
{
[MenuItem("Trace/Trace")]
public static void trace()
{
foreach (GameObject g in Selection.gameObjects)
{
ScriptWithPublicBools tb = g.GetComponent<ScriptWithPublicBools>();
if (tb)
{
tb.b1 = false;
tb.b2 = true;
}
}
}
}
脚本运行良好,游戏对象上的布尔值在编辑器中设置正确。但是当我按下PLAY按钮时,这两个布尔开关的值会恢复到应用脚本之前的值。
无论prefab的值如何,这些值都只会恢复到应用编辑器脚本之前的值。
我是否做错了什么,还是这是一个bug?
如果我应用编辑器脚本,将场景保存为新场景,并打开新创建的场景,则这些值也是错误的。
但是,如果GameObject不是prefab,则所有内容都可以完美地工作,并且这些值保持其由编辑器脚本给出的值,即使在启动播放模式后也是如此。
因此,问题仅在使用prefab时存在。