Moh*_*eem 2 c# string class object
已经搜索了其他问题,但没有找到如何做c#.尝试使用Map函数,但它在c#中不可用.
我想使用for循环来引用StrainsManager类中对象中的值:
public StrainsManager Ba2;
public StrainsManager Ba3;
public StrainsManager Ba4;
public StrainsManager Ba5;
public StrainsManager Ba6;
public StrainsManager Ba7;
public StrainsManager Ba8;
void Update()
{
for (int i = 2; i < 9; i++)
{
string strainString = "Ba" + i;
PlayerPrefs.SetFloat(strainString + "Cost", strainString.cost);
PlayerPrefs.SetFloat(strainString + "IPSAdd", strainString.IPSAdd);
PlayerPrefs.SetFloat(strainString + "Time", strainString.time);
PlayerPrefs.SetFloat(strainString + "CostMod", strainString.costMod);
PlayerPrefs.SetFloat(strainString + "InfectMod", strainString.infectMod);
}
}
Run Code Online (Sandbox Code Playgroud)
如果没有for循环,我将不得不为每个对象输入5行:
void Update()
{
PlayerPrefs.SetFloat("Ba2Cost", Ba2.cost);
PlayerPrefs.SetFloat("Ba2IPSAdd", Ba2.IPSAdd);
PlayerPrefs.SetFloat("Ba2Time", Ba2.time);
PlayerPrefs.SetFloat("Ba2CostMod", Ba2.costMod);
PlayerPrefs.SetFloat("Ba2InfectMod", Ba2.infectMod);
}
Run Code Online (Sandbox Code Playgroud)
显然,第一个代码中的第二部分不起作用(strainString.cost),因为strainString是一个字符串而不是StrainsManager类的对象.上面的for循环是可能的还是我必须手动为这7个对象键入35行?
您可以维护a Dictionary<string, StrainsManager>
将键"Ba#"映射到您的StrainsManager
实例.
void Update()
{
for (int i = 2; i < 9; i++)
{
string strainString = "Ba" + i;
map[strainString].Cost = strainString.cost; //follow this pattern for the other properties.
//PlayerPrefs.SetFloat(strainString + "IPSAdd", strainString.IPSAdd);
//PlayerPrefs.SetFloat(strainString + "Time", strainString.time);
//PlayerPrefs.SetFloat(strainString + "CostMod", strainString.costMod);
//PlayerPrefs.SetFloat(strainString + "InfectMod", strainString.infectMod);
}
}
Run Code Online (Sandbox Code Playgroud)