unity 回调函数代码实现
时间: 2024-08-03 13:00:39 浏览: 63
在Unity中,回调函数是一种常见的设计模式,它允许你在异步操作完成后自动执行某些代码。当你发起某个可能会花费时间的操作,如加载资源、网络请求等,你可以定义一个委托(Delegate),然后把这个委托作为参数传递给需要执行这个操作的对象。当操作完成时,系统会自动调用你提供的回调函数。
例如,假设你想在资源加载完毕后执行一些逻辑:
```csharp
using UnityEngine;
using System.Collections.Generic;
// 定义一个委托类型
public delegate void ResourceLoadCallback();
// 加载资源的类
public class LoadResource : MonoBehaviour
{
public ResourceLoadCallback OnResourceLoaded; // 回调函数
private void Start()
{
StartCoroutine(LoadAssetAsync("MyResource")); // 异步加载资源
}
IEnumerator LoadAssetAsync(string assetPath)
{
WWW www = new WWW(assetPath);
yield return www;
if (www.isDone && !string.IsNullOrEmpty(www.error))
Debug.LogError(www.error); // 检查错误
else
OnResourceLoaded(); // 资源加载成功时调用回调
}
}
// 使用场景
public class MainScene : MonoBehaviour
{
public LoadResource loadResource; // 引用加载资源的对象
private void Start()
{
loadResource.OnResourceLoaded += OnResourceLoadedHandler; // 注册回调
}
void OnResourceLoadedHandler() // 实现回调函数
{
Debug.Log("Resource loaded successfully");
// 在这里可以做后续处理
}
}
```
在这个例子中,`OnResourceLoadedHandler`是一个回调函数,会在`LoadAssetAsync`操作完成后被调用。当你创建`MainScene`实例并运行游戏时,如果资源加载完成,就会看到"Resource loaded successfully"的信息。
阅读全文