快速連結

2018年2月8日

動態設定Private Member時候遇到System.Reflection.MonoField錯誤

一般來說,要設定私人變數時,只要這麼寫通常可以順利進去:

var tProp = OverrideCtrl.GetType().GetField("name", BindingFlags.NonPublic | BindingFlags.Instance);
tProp.SetValue(tPorp, "new name value");

但若設定的是繼承MonoBehaviour的物件的話,請在setValue(Object, Value)中,把Object直接指向物件。

public GameObject TargetObject = null;
private void ReplaceObj(){
  var tProp = OverrideCtrl.GetType().GetField("monoObject", BindingFlags.NonPublic | BindingFlags.Instance);
  tProp.SetValue(OverrideCtrl, TargetObject);
}

沒有留言:

張貼留言

歡迎大家留言提問,我會答的都會盡力回答!
如果太久沒出現回應就是我又忘記回來看留言了TAT