使用大量变量C#Unity的更好方法

bla*_*sen 0 c# variables int unity-game-engine

我目前正在Unity中开发一款游戏,它是一款基于2D的游戏,包含3D中的某些组件.这是一个商业大亨游戏.所以我使用C#作为我的脚本,我目前有不同的员工类型,每个员工类型需要3个变量.XStaffTotal,XStaffFree,XStaffUsed以及最后的TotalStaff这是所有XStaffTotal变量的总和.我的问题是使用变量的好方法或最佳方法.这是我首先选择的,我认为有更好的方法,但我无法弄清楚.

public int TotalStaff;
public int LaborStaffFree;
public int LaborStaffUsed;
public int TotalLaborStaff;
public int RnDStaffFree;
public int RnDStaffUsed;
public int TotalRnDStaff;
public int AccountingStaffFree;
public int AccountingStaffUsed;
public int TotalAccountingStaff;
public int TechnicStaffFree;
public int TechnicStaffUsed;
public int TotalTechnicStaff;
public int SalesStaffFree;
public int SalesStaffUsed;
public int TotalSalesStaff;
public int MarketStaffFree;
public int MarketStaffUsed;
public int TotalMarketStaff;
Run Code Online (Sandbox Code Playgroud)

编辑

更多背景即将到来.所以基本上我有9个按钮,每次你点击其中一个按钮,无论是雇用人工还是雇用RnD,它都会+1到相应的XStaffFree,所以如果我点击雇用人工.

LaborStaffFree += 1;

然后当你在游戏中进行一个项目,要求工作人员分配说研究主板时,该项目将有一个必要的工作人员,所以

LaborStaffUsed += ProjectManager.requiredstaff;
LaborStaffFree -= LaborStaffUsed;
Run Code Online (Sandbox Code Playgroud)

使用ProjectManager是另一个c#脚本,requiredstaff是前面提到的int.

PS.这一切都在Unity中

Ali*_*iJP 6

您可以通过创建一些类和结构来完成此操作.例如,在您的情况下,首先为员工信息创建一个简单的结构:

public struct StaffInfo
{
     public int StaffFree;
     public int StaffUsed;
     public int TotalStaff;
}
Run Code Online (Sandbox Code Playgroud)

然后使用包含StaffInfo类型的不同属性的类或结构.

public class Staffs
{
      public StaffInfo LaborStaff {get;set;}
      public StaffInfo RnDStaff {get;set;}
      public StaffInfo AccountingStaff {get;set;}
      public StaffInfo TechnicStaff {get;set;}
      public StaffInfo SalesStaff {get;set;}
      public StaffInfo MarketStaff {get;set;}
      public int TotalStaff {get;set;}
}
Run Code Online (Sandbox Code Playgroud)

如果TotalStaff始终等于used + free,则只能使用带有getter的只读属性.

public int TotalStaff => StaffFree + StaffUsed;
Run Code Online (Sandbox Code Playgroud)