我在反思问题上很挣扎,实际上我不确定它是否是反射问题,但情况如下所示。
public Image IMG1;
int x = 1;
string temp;
temp = "IMG" + x.ToString(); //Now temp is a string with value "IMG1"
在Image类中,我们可以调用“精灵”。是否可以使用“temp.sprite”而不是“IMG1.sprite”?
public Sprite newSprite;
IMG1.sprite = newSprite;
更改为
temp.sprite = newSprite;
非常感谢。
答案 0 :(得分:1)
我不确定你是否需要在你的情况下使用反射。 但我建议尝试使用词典。所以在开始时你需要将你的所有图片字段添加到字典中:
Dictionary<string, Image> dict = new Dictionary<string, Image>();
dict.Add(nameof(IMG1), IMG1);
然后您可以通过以下方式访问您的字段:
dict[temp].sprite = xxxx
这种方法在性能方面要好得多。 但是,如果你真的需要通过反思来做到这一点,你可以调查一下“动态”。如果您不熟悉反射,则可以简化反射的使用。
或者使用常规反射您可以尝试这样的事情:
FieldInfo fieldInfo = typeof(YourClassWithImageField).GetField(temp);
Image img = fieldInfo.GetValue(ObjectWithYourField) as Image;
if (img != null)
{
img.sprite = xxxx;
}
希望它有所帮助。