万镜之下 2026-01-24 20:17 采纳率: 12.5%
浏览 5

unity的一些问题的不懂

学完了oop面向对象的23种设计模式,后开始准备学习ecs架构,结果发现ecs是与oop属于并列关系,意思就是23种设计模式并不能完全服务于ecs。又问下豆包,设计模式只能是20%服务于ecs,心态有点砸。都不知道游戏第一步做什么,是oop还是ecs。或者是ecs与oop要一起用,完全没思路。

  • 写回答

2条回答 默认 最新

  • 紫雾凌寒 新星创作者: 人工智能技术领域 2026-01-24 20:17
    关注

    让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek

    如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞

    1. 关键点分析:
      - 提问者在学习完面向对象的23种设计模式后准备学习ECS架构,发现ECS与OOP是并列关系,认为23种设计模式不能完全服务于ECS,甚至觉得只有20%能服务于ECS,想了解相关原因及情况。
    2. 解决方案:
      - ECS与OOP的关系
      • ECS(Entity - Component - System)架构是一种不同于传统面向对象编程(OOP)的架构模式。OOP主要围绕对象的继承、多态、封装等特性构建软件系统。而ECS将数据(组件)和行为(系统)分离,通过实体来组合不同的组件。
      • 例如在OOP中,一个角色类可能包含移动、攻击等方法和相关属性。在ECS中,有移动组件、攻击组件等,实体通过组合这些组件来实现类似功能。
      • 设计模式与ECS的适配情况
      • 虽然ECS与OOP是不同架构,但并非所有设计模式都完全不适用于ECS。一些设计模式的理念在ECS中仍有价值。
      • 比如观察者模式,在OOP中用于对象间的一对多依赖关系,在ECS中可以用于系统对组件状态变化的监听。例如,当一个角色的位置组件(属于组件)发生变化时,相关的渲染系统(属于系统)可以通过观察者模式得到通知并更新画面。
      • 工厂模式在ECS中也有应用场景。可以通过工厂来创建实体以及初始化其包含的组件。例如:
    public class EntityFactory
    {
        public Entity CreateEntity()
        {
            Entity entity = new Entity();
            entity.AddComponent(new PositionComponent());
            entity.AddComponent(new VelocityComponent());
            return entity;
        }
    }
    
     - 但确实有些设计模式在ECS中不太适用,因为ECS关注的是数据和行为的分离与组合方式,与OOP的对象层次结构和行为封装方式不同。例如装饰器模式,在OOP中用于动态地给对象添加职责,在ECS中由于组件和系统的架构特点,这种通过继承装饰对象的方式就不太容易直接应用。
    
    1. 不同方案优缺点:
      - 优点
      • 对于观察者模式和工厂模式等在ECS中的应用,优点是可以利用设计模式的成熟理念来优化ECS架构中的部分功能,提高代码的可维护性和可扩展性。例如观察者模式能清晰地分离组件状态变化的通知和处理逻辑,工厂模式可以方便地管理实体和组件的创建。
      • 缺点
      • 强行将一些不适用的设计模式应用于ECS可能会导致代码结构混乱。比如装饰器模式,如果硬套在ECS上,可能会破坏ECS原本的数据和行为分离的简洁性,增加代码理解和维护的难度。
    2. 总结:
      - ECS与OOP是不同的架构模式,23种设计模式不能完全照搬应用于ECS,但部分设计模式如观察者模式、工厂模式等在ECS中有一定的适配和应用价值,可以帮助优化ECS架构中的相关功能,而对于一些不适用的设计模式则不应强行应用,以免影响代码质量和架构的合理性。

    希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。

    评论

报告相同问题?

问题事件

  • 创建了问题 1月24日