TL:DR 我玩的游戏的ScriptableObject资产包含72,000个变量,对UnityProject进行反编译后,会显示该资产的72,000个变量,每个变量具有声明的值,并建立了它们分别设置的假设。这似乎是不切实际的,因此必须在脚本中声明要使用资产的变量的公式的总数要少得多,并且一旦运行一切,反编译器便会向我展示最终产品。
此假设的问题是,当我使用dnSpy(.Net Decompiler)搜索每个变量的所有已知引用时,它会在项目中找到它们的零声明,这使我相信将它们唯一的方法是如果是在资产内手动设置的话,则在脚本内未声明的情况下“已声明”。
我的问题是,还有其他方法可以声明这些变量,这些变量不在脚本内(因此零引用)且无需手动设置(不切实际)
参考文献:
TL:DR结束
完整
:基本上,游戏包含30个“层/楼层”,每个楼层可以分为1-300级,每个级别包含8个变量。进行数学运算,我们得到72,000个可声明的变量。
使用一个从编译的apk中提取Unity-Assets的程序(再次,严格出于教育目的),我找到了用于设置这些值的ScriptableObject。 程序查看时,它包含所有72,000个变量,每个变量都有声明的值。
我认为这似乎很奇怪,因为如果事先手工声明平衡机制(例如成本与收益之比)将变得非常困难。
有意义的是,尽管程序显示了所有72,000个变量,但可能只显示了它们,因为在代码中,有声明的公式(针对每个层)确定了如何计算每个级别的8个变量。 就像是, 对于第1层的变量“费用”:
//1 formula declares 300 'cost' variables for tier-1 only
[tier-1][level].cost = level*1.15
这意味着仅声明240个单独的公式,并且似乎是声明大量变量的最明显且最实用的方法。问题是,通过dnSpy(.NET反编译器)检查脚本后,我试图“分析”变量以在项目中找到对该脚本的 ALL 引用;我只发现2个引用(对于每个var)仅读取变量,而零引用却以任何方式对其进行声明(如果它们存在于当前上下文中,我应该会看到声明这些值的公式)。
我应该指出,开发人员是一个由我聚集的“ 10-50”名员工组成的团队。在如此规模的团队中,也许72,000个变量似乎不是一项艰巨的任务?
我想知道是否可以通过其他方式设置这些变量,以适应上下文,当搜索变量的引用时,我收到零个声明变量的结果,并假定变量不是通过以下方式单独设置的手。