Unity3D - 一种将一个字段的值与另一个字段或值进行比较的通用方法

Unity3D - A generic way to compare one field's value to another field or value

在 Unity3D 上有一个叫做 "UnityEvent" 的东西。我可以在任何 class 的任何实例上调用任何方法,只要该方法是 public。它也有漂亮的 GUI。

public class MyEventType : UnityEvent { }
public MyEventType OnEvent;
void Main(){
    OnEvent.Invoke();
}

我想要完成的是制作一个任务和对话系统。到目前为止,我可以使用这个东西来触发在其他地方编写脚本的事件。但是,我还需要一些东西来检查一些变量,如果它们的值小于、小于、等于、小于或等于、小于或等于任何给定值或不同的变量。

例如: 我们的英雄来到医院。他和医生谈话。对话控制器必须检查玩家的生命值(可通过 character.stats.currentHP 访问)是否小于他的最大生命值(character.stats.maxHP),如果是,屏幕上会出现一个选项 "What's up doc?".

当然,我可以为每个对话选项使用不同的脚本,这样会更简单,但关键是让不知道如何编写代码的人(比如我)建立任务和对话。我考虑过 system.reflection,但不知道如何让它发挥作用。

问题已通过 System.Reflection 解决,我需要了解如何做我需要做的就是一遍又一遍地阅读文档,直到我理解它。 显然,我几乎只需要成对列出这样的 类:

public class FieldReference
{
    public GameObject gObject;
    public string component;
    public string fieldName;
    public string value {
        get {
            return gObject.GetComponent (component).GetType ().GetField (fieldName).GetValue (gObject.GetComponent (component)).ToString ();
        }
    }
}

编写一些代码来比较它们和自定义检查器编辑器。

我应该经常阅读文档。