使用脚本在运行时之外创建/更改游戏对象



我有一个预制棒,它在我的游戏中被多次使用(它在运行时不会被安装,我只是通过将它拖到场景视图中来使用预制棒来构建我的关卡(。在这个预制件里面有许多地方,在那里写着特定的文本。此文本对于每个预制件都是独一无二的。

所以,它就像:

实例A

  • TextA(在实例内多次(

InstanceB

  • TextB(在实例内多次(

等等。。。

目前,我有两种选择:

  1. 我在每个实例中手动更改每个文本。这是可行的,但有点烦人,而且我可以看到我犯错误(比如拼写错误或忘记更改其中一条文本(
  2. 我通过脚本来解决它,并在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");
}
}

最新更新