我有一个预制棒,它在我的游戏中被多次使用(它在运行时不会被安装,我只是通过将它拖到场景视图中来使用预制棒来构建我的关卡(。在这个预制件里面有许多地方,在那里写着特定的文本。此文本对于每个预制件都是独一无二的。
所以,它就像:
实例A
- TextA(在实例内多次(
InstanceB
- TextB(在实例内多次(
等等。。。
目前,我有两种选择:
- 我在每个实例中手动更改每个文本。这是可行的,但有点烦人,而且我可以看到我犯错误(比如拼写错误或忘记更改其中一条文本(
- 我通过脚本来解决它,并在Awake或Start方法中更改文本。这是可行的,但每次都必须这样做,我开始比赛
我希望的是像2(这样的解决方案,但不是每次都这样(因为没有什么变化,每次都一样(,而是只有一次——所以它是由脚本生成的,但在那之后,它将一直存在。即使我不在运行时,只是在场景视图中工作。
你知道这样做的方法吗?
谢谢!
如果希望在运行时之外运行一段代码,可以使用以下两个选项之一。
OnValidate方法
当加载MonoBehaviour
脚本或检查器值发生更改时,会触发OnValidate
。
using UnityEngine;
public class TestScript : MonoBehaviour
{
private void OnValidate()
{
Debug.Log("test");
}
}
ExecuteInEditMode属性
将ExecuteInEditMode
添加到MonoBehaviour
类将使其在运行时内外都能正常工作。如果您不希望脚本在运行时发挥作用,也可以随意使用Application.isPlaying
。
using UnityEngine;
[ExecuteInEditMode]
public class TestScript : MonoBehaviour
{
private void Update()
{
if (!Application.isPlaying)
Debug.Log("test");
}
}