Unity3D-一种比较一个字段的通用方法';s值转换为另一个字段或值

本文关键字:字段 另一个 转换 比较 一种 一个 Unity3D- 方法 | 更新日期: 2023-09-27 18:28:03

在Unity3D上有一种叫做"UnityEvent"的东西。我可以在任何类的任何实例上调用任何方法,只要该方法是公共的。它也有很好的GUI。

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

我正在努力实现的是建立一个探索和对话系统。到目前为止,我可以使用这个东西来触发其他地方编写的事件。但是,我也需要一些东西来检查一些变量的值是否小于、小于、等于、小于或等于任何给定值或不同的变量。

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

当然,我可以为每个对话选项使用不同的脚本,这会更简单,但重点是让不知道如何编写代码的人(像我一样)构建任务和对话。我考虑过系统反思,但不知道如何让它发挥作用。

Unity3D-一种比较一个字段的通用方法';s值转换为另一个字段或值

使用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 ();
        }
    }
}

编写一些代码将它们与自定义检查器编辑器进行比较。

我应该更经常地阅读文档。