c#想要脚本a监听到另一个脚本执行save时进行refresh
时间: 2024-12-19 21:28:04 浏览: 4
在 C# 中,如果你想让脚本 A 监听另一个脚本 B 执行 `Save` 事件并触发自身的一个 `Refresh` 方法,你可以利用 Unity 的事件系统或者委托(Delegates)。以下是一个简单的示例:
1. 首先,在脚本 B(假设名为 `ScriptB`)中添加 `Save` 方法,并将其设置为公开的(public),以便其他脚本可以订阅:
```csharp
public class ScriptB : MonoBehaviour
{
public event Action OnSave; // 定义公共事件
public void Save()
{
// 进行保存操作
if (OnSave != null) // 如果有订阅者
OnSave(); // 触发事件
}
}
```
2. 然后,在脚本 A(假设名为 `ScriptA`)中订阅 `OnSave` 事件并实现 `Refresh` 方法:
```csharp
public class ScriptA : MonoBehaviour
{
private ScriptB scriptB; // 假设已将ScriptB组件存储为scriptB变量
void Start()
{
// 注册对ScriptB.OnSave事件的订阅
scriptB.OnSave += Refresh;
}
void OnDestroy()
{
// 销毁时取消订阅,防止内存泄漏
scriptB.OnSave -= Refresh;
}
public void Refresh()
{
// 脚本A的刷新操作
Debug.Log("Script A received a save and is refreshing");
}
}
```
在这个例子中,当 `ScriptB` 的 `Save` 方法被执行时,会触发 `OnSave` 事件,而 `ScriptA` 中已经注册的 `Refresh` 方法会被自动调用。
阅读全文