有没有一种方法可以通过字符串引用脚本



甚至不确定这是否可能,但我试图将一个值存储到静态数据持有者脚本中,但我有多个东西需要保存相同的值。所以我的DataHolder看起来是这样的:

//Friendly

public static int fmp;
public static int fweap;
public static int ffood;

//Contested1
public static int c1mp;
public static int c1weap;
public static int c1food;

我希望能够通过一个字符串在Monopahavior脚本中引用它,我将其定义为";fmp";参考";fmp";在DataHolder中。

public string manpowerDataName;
public int MP;
void Start()
{
PlanetData.(manpowerDataName) = MP;
}

有什么办法可以做到这一点吗?还是我做错了?

如果我没有弄错,一个简单的Dictionary<string, int>就可以了。

例如:

private static Dictionary<string, int> _dataHolder = new Dictionary<string, int> ( );
public static bool Get ( string name, out int value )
{
value = 0;
if ( _dataHolder.TryGetValue ( name, out value ) ) return true;
return false;
}
public static bool Set ( string name, int value )
{
if ( _dataHolder.ContainsKey ( name ) ) return false;
_dataHolder.Add ( name, value );
return true;
}

现在你可以简单地调用DataHolder.Get和DataHolder.Set如下:

if ( DataHolder.Set( manpowerDataName, MP ) )
Debug.Log( $"{manpowerDataName} was set to {MP}" );

最新更新