unity3d 使用程序集组织脚本以减少重新编译时间的简单方法是什么?[closed]

ffx8fchx  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(143)

已关闭。此问题为opinion-based。当前不接受答案。
**想要改进此问题吗?**请更新问题,以便editing this post可以用事实与引用来回答.

22小时前关门了。
Improve this question
我遇到的问题是,例如,在脚本中更改不超过一个字母的情况下,重新编译的时间会变得很长。我知道,您可以创建程序集定义,以便只重新编译同一程序集中的脚本。因此,我想知道的是,我应该如何组织脚本以实现最简单的管理?
我脑子里有一个想法,我现在就演示一下。
为清楚起见:彩色轮廓突出显示了相互依赖的内容,内部带有文本的黑色圆圈是属于由内部带有文本的正方形标记的类的函数。
假设我有一个附加了Player脚本的Player对象(Square“Player”),它包含以下函数:“旋转”,“移动”,“射击”和“制造噪音”。当我移动(蹲下,行走,冲刺等)时,它会将声音的特定强度和开始位置发送到“制造噪音”函数,该函数反过来示例化一个噪音对象(脚本为“生成噪音”的空游戏对象),该对象计算噪音的范围和强度,然后模拟一个不断扩大的声音圈。
由于Player脚本使用GenerateNoise脚本,它们相互依赖,“必须”一起重新编译。然而,我的想法是将Player的函数“MakeNoise”分离到一个名为NoiseManager的空GameObject中,该对象只接收声音的强度和开始位置,然后将其发送到GenerateNoise对象。

上述当前功能:当玩家射击或移动时,它会创建一个具有强度和起始位置的噪声,然后示例化一个NoiseObject来完成其余的工作。

上述计划功能:现在,SoundManager将处理来自播放器的数据,并将其发送到GenerateNoise对象。因此,播放器脚本依赖于NoiseManager,而NoiseManager依赖于GenerateNoise(至少在我看来是这样)。
所以现在,在Player中更改一些内容只会重新编译它和NoiseManager,在GenerateNoise中更改一些内容只会重新编译它和NoiseManager?

u0sqgete

u0sqgete1#

尝试在模块中编写代码。
例如:当你使用玩家移动时,你不需要知道交互模块。如果你需要从一个模块输入到另一个模块,使用事件。所以玩家MonoBehaviours的文件夹可以和交互脚本的文件夹分开编译。只需要在其中创建汇编定义文件。如果你有类似Utility文件夹的东西,有一堆扩展和带有汇编文件Utility的Utility类,您将需要在所有其他文件夹汇编文件中引用它,以便能够访问这些实用程序类因此,编辑播放器文件夹时,交互不会重新编译,但依赖于播放器汇编任何内容都会重新编译同样,编辑实用程序将触发编译任何使用它们内容因为您通常不编辑实用程序,但编辑您系统,这将保存一些时间
这也会对很大的代码库产生很大的影响。这就是为什么你导入的任何代码资产都带有汇编文件。除非你不编辑它们,否则它们不会重新编译。
如果只使用一堆脚本仍然需要很长的编译时间,那么您可能需要在其他地方寻找,如下所示:https://docs.unity3d.com/Manual/ConfigurableEnterPlayMode.html

相关问题