我已经多次(从最佳实践的角度)了解过这种模式:
内存分配:始终考虑创建和使用对象池,而不是即时实例化新对象。这将有助于减少内存碎片,并减少垃圾收集器的工作。
但是,我不知道这实际上意味着什么。我该如何实施?
例如,我可以实例化一个GameObject
使用Instantiate
Unity 的方法吗?
Instantiate(prefab, new Vector3(2.0F, 0, 0), Quaternion.identity);
不鼓励这种用法吗?还有什么意思?
Google上的第一个链接;)unity3d.com/fr/learn/tutorials/topics/scripting/object-pooling
—
Hellium
谢谢Hellium,我没看过给定的视频(太大),但文字确实帮助我理解了“实例化和销毁行为效率低下,可能会使您的项目变慢”
—
Muhammad Faizan Khan
请注意,尽管此建议很普遍,但并非每款游戏都绝对要求。特别是如果您要制作小型/简短的桌面游戏,果酱提交或原型,则无需费劲地实现池化。在我的浸泡测试中,Unity甚至可以承受比我们认为更好的大规模产卵和破坏。;)但是,如果您正在制作一个漫长的游戏,而又不想让垃圾堆积起来并在以后收集垃圾时造成结结,或者如果您针对的移动平台对性能的影响更为强烈,那么请考虑合并。
—
DMGregory
谢谢@DMGregory你是对的。您的输入总是有价值的。我们不必担心小型游戏中的对象池化,因为这将需要额外的编码工作。
—
Muhammad Faizan Khan
这是一种非常常见的模式,但是请务必遵循以下规则:“先进行配置,然后进行优化”。优化无关紧要的事情很容易。
—
Cort Ammon-恢复莫妮卡