在Unity中实现:存储一些变量,变量为单位名称,单位编号,上级单位编号,将这些变量进行全局存储,在其他脚本中可以根据单位名字来获取到对应的单位编号以及上级编号,通过上级编号或者单位编号也可以获取到单位名称
时间: 2024-09-09 09:05:56 浏览: 43
在Unity中实现变量的全局存储,你可以使用多种方式,其中一种常见的方法是使用单例模式来创建一个全局管理器类。这个类可以用来存储所有单位的名称、编号以及上级编号的信息,并提供访问这些信息的方法。
具体步骤如下:
1. 创建一个全局管理器类,比如命名为`UnitManager`。
2. 在这个类中定义一个静态的数据结构,例如使用`Dictionary`来存储单位的名称和其对应的编号,以及上级编号。
3. 提供公共方法来添加、删除和检索单位信息。例如,一个方法可以根据单位名称获取到对应的单位编号和上级编号,另一个方法可以根据单位编号或上级编号获取单位名称。
下面是一个简化的示例代码:
```csharp
using System.Collections.Generic;
public class UnitManager
{
// 存储单位信息的字典
private static Dictionary<string, (int unitId, int? superiorUnitId)> unitInfo = new Dictionary<string, (int, int?)>();
// 添加单位信息
public static void AddUnitInfo(string unitName, int unitId, int? superiorUnitId = null)
{
unitInfo[unitName] = (unitId, superiorUnitId);
}
// 根据单位名称获取单位编号和上级编号
public static (int, int?) GetUnitInfoByUnitName(string unitName)
{
if (unitInfo.TryGetValue(unitName, out var info))
{
return info;
}
return (0, null); // 默认返回值,表示未找到
}
// 根据单位编号获取单位名称
public static string GetUnitNameByUnitId(int unitId)
{
foreach (var unit in unitInfo)
{
if (unit.Value.unitId == unitId)
{
return unit.Key;
}
}
return string.Empty; // 默认返回空字符串,表示未找到
}
// 根据上级单位编号获取单位名称
public static string GetUnitNameBySuperiorUnitId(int superiorUnitId)
{
foreach (var unit in unitInfo)
{
if (unit.Value.superiorUnitId == superiorUnitId)
{
return unit.Key;
}
}
return string.Empty; // 默认返回空字符串,表示未找到
}
}
```
在这个类中,我们使用了`Dictionary`来存储单位名称和单位信息的对应关系。`AddUnitInfo`方法用于添加单位信息,`GetUnitInfoByUnitName`用于通过单位名称获取单位编号和上级编号,`GetUnitNameByUnitId`和`GetUnitNameBySuperiorUnitId`分别用于通过单位编号和上级单位编号来获取单位名称。
阅读全文