【发布时间】:2021-01-20 12:43:59
【问题描述】:
我正在通过检查器窗口添加一组数组值。当我更改数组值时,我试图实现触发功能。也就是说,我的脚本应该检查新值是否不等于旧值,然后调用此函数。 我不想使用 Update,因为它会占用更多内存和处理能力,那么还有什么替代方法?
public class SetValues : MonoBehaviour {
[Serializable]
public struct SetValues
{
public float Position;
public float Value;
}
public SetValues[] setValues;
void Function_ValuesChanged()
{
Debug.Log("The Value is changed");
//Do Something
}
}
【问题讨论】:
-
如果有帮助,这里有一个简单的 Unity 事件教程:stackoverflow.com/a/36249404/294884
-
@Fattie Unity 事件和 C# 事件不一样。在这种情况下,您不能使用 Unity 事件。 Unity Events 的预期使用领域是 UI 交互。
-
嗨@SeLeCtRa - 我不知道你在说什么,这没有任何意义。 (对不起!)要在值更改时触发某些内容,您只需使用属性(如您的答案中所述)。这就是问题的答案。 (就像你的好答案一样!)当然,在那之后,你很可能会使用一个事件 - 所以我只是放入链接来帮助 OP。
-
我并不是要冒犯你,伙计。我们只是在讨论,我知道您需要帮助,但据我所知 Unity Event System 并非如此。我只是写评论,因为如果有人看到并尝试它,它不会按预期工作,因为 UI 和脚本之间的交互是不同的层。如果我错了,请纠正我。如果可能的话,我也渴望以这种方式学习。
-
顺便说一句,我对讨论感到困惑,但 UnityEvents 不仅适用于 Unity.UI 吗?您可以将它们用于 Unity 中的任何单一行为(我相信!)