所以我有一个ComponenetCopier脚本,有什么惊奇的复制了脚本。
问题是,当我构建游戏时,它不起作用,它会抛出以下错误并中止该过程,但有以下例外:
System.ArgumentException:在System.Reflection.MonoProperty上找不到“ hideFlags”的获取方法
它死去的代码在这里:
PropertyInfo[] properties = type.GetProperties();
Debug.Log("Do i die here?");
foreach (PropertyInfo property in properties)
{
property.SetValue(myNew_Component, property.GetValue(original, null), null);
}
当它在编辑器模式下工作时,我不知道为什么它会失败,但这已经困扰了我好几天了。
非常感谢您的帮助...
附:我正在使用反射来复制组件。
最佳答案
我认为hideFlags指的是此=> UnityEngine.HideFlags
Doc
PropertyInfo[] properties = type.GetProperties();
foreach (PropertyInfo property in properties)
{
// Add this or else u might run into problems later
if (!property.CanWrite)
{
continue;
}
// Hide flags is an Enumeration. the default value for it is HideFlags.None
// i assume u dont chnage this value, so for your use case this will be Ok
if (property.PropertyType.IsEnum && property.ToString() == "UnityEngine.HideFlags hideFlags")
{
property.SetValue(my_Component, HideFlags.None);
continue;
}
property.SetValue(my_Component, property.GetValue(original));
}
上面的代码应该可以解决问题
关于c# - Unity Player抛出异常:System.ArgumentException:找不到'hideFlags'的Get方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57777511/