【问题标题】:Better way to use lots of variables C# Unity使用大量变量 C# Unity 的更好方法
【发布时间】:2018-10-22 12:01:33
【问题描述】:

我目前正在 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;

编辑

更多上下文即将出现。 所以基本上我有 9 个按钮,每次你点击其中一个按钮,无论是 Hire Labor 还是 Hire RnD,它都会 +1 到相应的 XStaffFree,所以如果我点击 Hire Labor。

LaborStaffFree += 1;

那么当你在游戏中进行一个需要分配人员的项目时,比如研究主板,该项目将有一组所需的人员,所以

LaborStaffUsed += ProjectManager.requiredstaff;
LaborStaffFree -= LaborStaffUsed;

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

PS。这一切都在 Unity 中

【问题讨论】:

  • 为什么不为每种类型创建一个结构? (例如 LabourStaff {Free, Used, Total})
  • 很难提出更好的建议,因为不知道所有这些属性的确切用途以及您如何使用它们等。也许与我们分享更多的上下文。
  • "我目前有不同的员工类型,每种员工类型需要 3 个变量。" -- 听起来是时候去 OOP 并引入一个带有具体实现的 Staff 接口了 :)
  • @stickybit 提供更多上下文

标签: c# variables unity3d int


【解决方案1】:

您可以通过创建一些类和结构来做到这一点。 例如,在您的情况下,首先为员工信息创建一个简单的结构:

public struct StaffInfo
{
     public int StaffFree;
     public int StaffUsed;
     public int TotalStaff;
}

然后使用包含 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;}
}

如果 TotalStaff 总是等于 used + free 你可以使用只读属性和 getter。

public int TotalStaff => StaffFree + StaffUsed;

【讨论】:

    猜你喜欢
    • 2015-07-19
    • 2018-03-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-15
    • 1970-01-01
    • 2014-05-03
    • 1970-01-01
    • 2018-11-23
    相关资源
    最近更新 更多