unity3d根据字符串读取属性. unity3d的对象有field, property.
⼀般要取得类的某个属性时,要使⽤GetType().GetField(xxx);
许多教程都写⽤property.(坑)
property 感觉是运⾏时的属性.(not sure!)
ex:有个类xxx
public class xxx{
public int aaa = 5;
public string bbb = "test";
}
那么要取得xxx的aaa属性,则应该先从xxx⾥读取叫aaa的fieldinfo. 再从fieldinfo⾥取value.
完整代码:
/
/检查字段
public bool hasField(string fieldName)
unity 教程{
return this.GetType().GetField(fieldName) != null;
}
xxx.hasField("aaa"); //true
xxx.hasField("ccc"); //false
//获取字段类型
public Type getFieldType(string fieldName)
{
return this.GetType().GetField(fieldName).FieldType;
}
//获取字段值
public object getFieldValue(string fieldName)
{
return this.GetType().GetField(fieldName).GetValue(this);
}
//给某个字段设值.
public void setFieldValue(string field, object val)
{
Type Ts = this.GetType();
if (val.GetType() != Ts.GetField (field).FieldType) {
val = Convert.ChangeType(val, Ts.GetField(field).FieldType); }
Ts.GetField (field).SetValue (this, val);
}
xxx.setFieldValue("aaa",999);
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论