SUPER SURVIVORS是unity开发的2D超级英雄roguelite游戏,在该游戏中,你可以为不同身体部位装备力量,并将它们与数百个物品组合起来,创建独特的建造。其中一个最大的挑战是设计一个系统,使得力量和物品可以以不同方式互相作用,而不使游戏变得无法平衡。这在物品可以被组合以改进它们 无限制 时变得更加具有挑战性。我的哲学是,足够的运气和游戏知识,玩家应该能够完全打破游戏。 优化已经成为另一个主要挑战。 我使用unity的ScriptableObjects来存储项目、敌人、可玩角色和其他游戏系统的数据。这使我能够将共享数据与运行时行为分离,而不是依赖多个脚本实例来持有通用信息。 我还实施了对象池来重复使用频繁的对象,如敌人、投射物和硬币。硬币令人惊讶地难以优化。最初,它们相互碰撞,导致每当有数百个硬币累积在屏幕上时,物理交互次数会大大增加。我移除了硬币之间的碰撞,并让硬币以足够的间隔生成,以避免重叠,这显著改善了性能。投射物又是一个挑战,因为玩家的力量可以几乎无限地扩大。最初,我引入了每种力量只能生成多少个投射物的限制,然后实现了 FIFO-基于的投射物清除,重用最旧的投射物时需要创建新的投射物。 当游戏允许活跃对象的数量剧增时,如何在unity中优化性能? Steam wishlist:https://store.steampowered.com/app/5314350/Super_Survivors/