我的游戏有点卡住了。我有一个名为 Upgradebuttons 的类。我想从这个类访问存储在另一个类的结构中的一些变量。我可以通过键入 classname.structname.preferedvar 轻松访问变量,但 structname 取决于所单击的升级。所以我想使用字符串调用结构。我试过:
MethodInfo method = typeof(Classname).GetMethod(structname);
但这只有在它是 void 而不是结构时才有效。我需要做什么才能使它正常工作?
public class UpgradeButtons : MonoBehaviour {
public void somefunction{
// here i want to have access
}
}
这是我想要访问的类的示例:
public class Upgrades: MonoBehaviour {
public struct Upgrade1{
public const int Cost = 10;
public const float Value = 0.1f;
public static string Naam = "Autoclicker";
}
}
最佳答案
虽然这是可能的,但听起来设计欠佳。也许您可以使用一种常见的 struct Upgrade
并使用 Name
属性在运行时找到它?
例子:
public struct Upgrade
{
public string Name;
public int Cost;
public float Value;
public Upgrade(string name, int cost, float value)
{
this.Name = name;
this.Cost = cost;
this.Value = value;
}
}
public class UpgradeButtons : MonoBehavior
{
List<Upgrade> Upgrades = new List<Upgrade>();
public void CreateButtons()
{
Upgrades.Add(new Upgrade("Autoclicker", 10, 0.1f));
//etc...
}
public void somefunction()
{
Upgrade autoclickUpgrade = Upgrades.Where(p => p.Name == "Autoclicker").FirstOrDefault();
if(autoclickUpgrade == null)
throw new Exception("Could not find Autoclicker upgrade.");
//do something with autoclickUpgrade
}
}
关于C# 使用字符串访问结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23662058/