【发布时间】:2015-12-24 17:33:04
【问题描述】:
在 Unity3D 上有一个叫做“UnityEvent”的东西。我可以在任何类的任何实例上调用任何方法,只要该方法是公共的。它也有不错的 GUI。
public class MyEventType : UnityEvent { }
public MyEventType OnEvent;
void Main(){
OnEvent.Invoke();
}
我想要完成的是制作一个任务和对话系统。到目前为止,我可以使用这个东西来触发在其他地方编写的事件。但是,我还需要一些东西来检查一些变量,如果它们的值小于、小于、等于、小于或等于、小于或等于任何给定值或不同的变量。
例如: 我们的英雄来到医院。他与医生交谈。对话控制器必须检查玩家的生命值(可通过 character.stats.currentHP 访问)是否小于他的最大生命值(character.stats.maxHP),如果是,屏幕上会出现一个选项“What's up doc?”。
当然,我可以为每个对话选项使用不同的脚本,这样会更简单,但重点是让不知道如何编写代码的人(比如我)构建任务和对话。我考虑过 system.reflection,但不知道如何使其工作。
【问题讨论】:
-
那你说的就是要根据不同的字符属性状态来运行不同的脚本吗?我不太明白你想达到什么目的。
-
@neo 一个函数,它将循环遍历未知类型元素的引用列表(?),将每个元素与给定值或相同类型的不同元素进行比较。
-
通过反思可以找出手头的类型并决定如何处理它。什么是让你很难过的部分?
-
@neo 我需要存储它是什么类型,以及将与该字段进行比较的值,而且我不知道如何访问例如结构内部的字段,而不必比较整个结构或其他东西。我什至不知道如何写它。
-
你用过反射吗?
标签: c# unity3d field system.reflection