我想为我通过反思获得的价值增加价值。 += 不起作用,SetValue 不符合我的需求。 *
这是我的课:
public class OreMine : MonoBehaviour
{
[SerializeField] string VariableName;
void OnCollisionEnter2D(Collision2D col)
{
if(col.gameObject.tag == "Player")
{
var Value = typeof(Inventory).GetField(VariableName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static);
Destroy(gameObject);
}
}
}
问题是我无法做到这一点:
Value += 1
这不符合我的需求:
public class OreMine : MonoBehaviour
{
valueField.SetValue(null, SomeInteger);
}
在 Microsoft 文档中,AddValue 似乎仅适用于字符串。
Value += 1
就是Value = Value + 1
。如果您使用反射,则需要一个 GetValue
、从 object
到正确类型的转换、增量和 SetValue
(这将有一个隐式转换/框回到 object
) 。这与 AddValue
无关,这是一个序列化概念。