在不销毁游戏对象的情况下调用方法或发送回调的一种解决方法是使用静态方法或单例模式。下面是一个示例代码:
using UnityEngine;
public class GameManager : MonoBehaviour
{
private static GameManager instance;
public static GameManager Instance
{
get { return instance; }
}
private void Awake()
{
// 检查是否已经存在实例,如果存在则销毁当前的游戏对象
if (instance != null && instance != this)
{
Destroy(gameObject);
return;
}
// 将当前游戏对象设置为实例,并确保在场景加载时不被销毁
instance = this;
DontDestroyOnLoad(gameObject);
}
public void DoSomething()
{
Debug.Log("Doing something...");
}
}
在上述代码中,GameManager 是一个单例类,并且通过 DontDestroyOnLoad 方法确保游戏对象在场景加载时不会被销毁。通过 GameManager.Instance 可以在其他脚本中获取到 GameManager 的实例,并调用其中的方法。
using UnityEngine;
public class OtherScript : MonoBehaviour
{
private void Start()
{
GameManager.Instance.DoSomething();
}
}
在其他脚本中,可以通过 GameManager.Instance 来获取 GameManager 的实例,并调用其中的方法或发送回调,而不需要销毁游戏对象。