使用带静态变量的字符串?

时间:2016-09-12 13:10:14

标签: c# unity3d

我遇到了涉及2个不同脚本的问题。我想要实现的是使用字符串来访问静态变量,如标题建议。

我的第一个脚本:

using UnityEngine;
using System.Collections;

public class GameInformation : MonoBehaviour 
{
    //Upgrades Info, 1 is bought while 0 is not bought
    public static int TipJar;
}

我的第二个脚本:

using UnityEngine;
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;

public class Upgrades : MonoBehaviour 
{

public List<PlayerTank> playerList;
public class PlayerTank // Here is my class for PlayerTank
{ 

    public string Name;
    public string Value;

    // This is a constructor to make an instance of my class. 
    public PlayerTank (string NewName, int NewValue) 
    {
        Name = NewName;
        Value = NewValue;
    }
}

void Start() 
{

    playerList = new List<PlayerTank>();

    playerList.Add (new PlayerTank("TipJar", GameInformation.TipJar));

    //To loop all the list
    for(int i = 0; i < playerList.Count; i++)
    {
        int TempInt = i;

        playerList[i].NewValue += 1; //This line works but Gameinformation.TipJar will still contain the value 0, i want it to be 1.

    }
}

}

我的目标是更新GameInformation.TipJar中的值,但它会一直包含0

我尝试将playerList[i].NewValue += 1;替换为GameInformation.playerList[i].Name(which is TipJar) += 1

我一直在寻找一段时间,我找不到解决方案,任何想法?

2 个答案:

答案 0 :(得分:1)

很可能是拼写错误?

更改

GameInformation.playerList[i].Name += 1; //This line will not work

playerList[i].Name += 1;

字段Name的类型为String,所以我怀疑+1在这里有意义。我想你想要像

这样的东西
playerList[i].Name += (i + 1);

答案 1 :(得分:0)

  

对于不明确的问题,我很抱歉,我的目标只是在for循环()中使GameInformation.TipJar的值为1;

从你那里得到这个评论,我认为GameInformation.TipJar意味着是全局的(意味着它在你的循环中应该是1,无论playerList的内容如何)。在此假设下,我将为您提供两种解决问题的方法:

<强> 1。使用静态变量(简单方法)

如果这是正确的,那么只需在循环开始之前设置静态GameInformation.TipJar = 1;,然后在循环之后立即设置GameInformation.TipJar = 0;

<强> 2。使用反射

如果您对GameInformation对象有引用(比如它名为gio),您可以按字段名称将其字段设置为字符串:gio.GetType().GetField("TipJar").SetValue(gio, value)。 (见:https://msdn.microsoft.com/en-us/library/6z33zd7h(v=vs.110).aspx

如果这不能回答你的问题,那么我很抱歉,我真的不知道你想要做什么。