We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近在学习VR的时候,接触到了ECS(Entity Component System)的概念。ECS和OOP是不相同的编程模式,在3D游戏开发的过程中,我们需要对物体进行抽象,使用OOP就是定义一个基类GameObject,然后继承这个基类就可以实现各种游戏对象了,但是问题在于,游戏对象各种逻辑已经定死了,如果需要更改逻辑则需要重写或者覆盖基类。使用继承会造成逻辑维护混乱的问题,于是2002年ECS提了出来,核心思想主要是通过组合来实现对象。 其中Entity指的是一个可以绑定component的实例,如果没有component,Entity就是一个什么也做不了的实例,类似与HTML中的一个空DIV。 Component指的是可重复使用的模块以及数据容器,它可以绑定在Entity上,让Entity具有外观、行为等。 System主要负责依据Component管理更新entity。 举例来说,一个物体A具有渲染Component和碰撞Componnet,物体B只具有渲染Component,其中Component是可以复用的。当游戏循环中,渲染System发现一个Entity具有渲染Component时,就会负责更新。 简单来说,有多少个Component就有多少个System,Component一般负责管理数据,System一般负责管理逻辑。
完。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
最近在学习VR的时候,接触到了ECS(Entity Component System)的概念。ECS和OOP是不相同的编程模式,在3D游戏开发的过程中,我们需要对物体进行抽象,使用OOP就是定义一个基类GameObject,然后继承这个基类就可以实现各种游戏对象了,但是问题在于,游戏对象各种逻辑已经定死了,如果需要更改逻辑则需要重写或者覆盖基类。使用继承会造成逻辑维护混乱的问题,于是2002年ECS提了出来,核心思想主要是通过组合来实现对象。
其中Entity指的是一个可以绑定component的实例,如果没有component,Entity就是一个什么也做不了的实例,类似与HTML中的一个空DIV。
Component指的是可重复使用的模块以及数据容器,它可以绑定在Entity上,让Entity具有外观、行为等。
System主要负责依据Component管理更新entity。
举例来说,一个物体A具有渲染Component和碰撞Componnet,物体B只具有渲染Component,其中Component是可以复用的。当游戏循环中,渲染System发现一个Entity具有渲染Component时,就会负责更新。
简单来说,有多少个Component就有多少个System,Component一般负责管理数据,System一般负责管理逻辑。
完。
The text was updated successfully, but these errors were encountered: