gpt4 book ai didi

c# - Unity 监听器/事件,例如 GameObject 属性的 OnValueChanged

转载 作者:行者123 更新时间:2023-12-05 05:25:31 25 4
gpt4 key购买 nike

每次我的 gameObject.renderer.isVisible 设置为 false 时我都想调用一个函数而不使用 Update(){
如果(gameObject.renderer.isVisible == false)
函数调用();
太丑了。

所以我想知道如何为 GameObject 属性和脚本变量创建一个像 OnValueChanged(bool) 这样的监听器/事件?也许有更简单的方法,我是 Unity 的新手,所以也许我遗漏了一些东西。

谢谢,抱歉我的英语不好

最佳答案

使用MonoBehaviour.OnBecameInvisible() .

public delegate void OnBooleanChanged(bool state);
public event OnBooleanChanged OnVisibilityChangedEvent;
private bool _isVisible;

void Start()
{
_isVisible = renderer.isVisible;
OnVisibilityChangedEvent += OnVisibilityChanged;
}

void Update()
{
if((_isVisible && !renderer.isVisible) | (!_isVisible && renderer.isVisible))
{
_isVisible = !_isVisible;

// example of custom function call
OnVisibilityChanged(_isVisible);

// example of event call
if(OnVisibilityChangedEvent != null) OnVisibilityChangedEvent(_isVisible);
}
}

private void OnVisibilityChanged(bool isVisible)
{
// ...
}

或使用 MonoBehaviourEvents

void OnBecameVisible()
{
if(OnVisibilityChangedEvent != null)
OnVisibilityChangedEvent(true);
}

void OnBecameInvisible()
{
if(OnVisibilityChangedEvent != null)
OnVisibilityChangedEvent(false);
}

关于c# - Unity 监听器/事件,例如 GameObject 属性的 OnValueChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30462607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com