以下是一个解决方法的示例代码,通过使用静态变量来确保只有第一个附着相同脚本的游戏对象才会重新生成:
public class ExampleScript : MonoBehaviour
{
// 静态变量用来记录是否生成过
private static bool hasSpawned = false;
private void Awake()
{
// 如果已经生成过,销毁当前对象
if (hasSpawned)
{
Destroy(gameObject);
}
else
{
// 标记为已生成
hasSpawned = true;
// 在这里执行你的初始化逻辑
}
}
}
在这个示例中,Awake()
方法会在对象被实例化时调用。它首先检查 hasSpawned
变量的值,如果已经为 true
,则销毁当前对象。否则,将 hasSpawned
设置为 true
,表示这个脚本所附着的对象已经生成过。你可以在 else
语句中执行你需要的初始化逻辑。
通过这种方法,只有第一个附着相同脚本的游戏对象会执行初始化逻辑,其他相同脚本的对象将会被销毁。