ET框架

发布时间 2023-05-04 09:01:32作者: Domefy

ET框架是一个基于Unity3D的游戏开发框架,它提供了一套完整的游戏开发解决方案,包括网络通信、实体组件系统、热更新、资源管理、UI框架等功能,可以帮助开发者快速构建高效、可扩展的游戏。

下面是ET框架代码的解释:

  1. ETModel
    ETModel是框架的核心模块,它包含了游戏开发中常用的一些基础组件,如实体组件、消息组件、资源加载组件等。其中,实体组件是框架的核心,它采用了ECS(Entity-Component-System)架构,将游戏对象拆分为实体和组件,实现了高效的游戏系统。

  2. ETNetwork
    ETNetwork是框架的网络模块,它基于KCP协议实现了可靠UDP传输,支持多种网络通信方式,如RPC、消息广播、Session等。通过ETNetwork,开发者可以方便地实现游戏中的网络通信功能。

  3. ETTask
    ETTask是框架的任务模块,它提供了一套高效的协程实现方式,支持异步任务、任务链、任务池等功能。通过ETTask,开发者可以轻松地实现异步操作,提高游戏的性能和响应速度。

  4. ETCold
    ETCold是框架的旧版代码,包含了一些基础组件和工具类,如对象池、定时器、事件管理器等。虽然已经被ETModel取代,但是在某些特定场景下,ETCold仍然可以发挥作用。

  5. ETEditor
    ETEditor是框架的编辑器模块,它提供了一套可视化的编辑器工具,包括资源管理器、实体编辑器、场景编辑器等。通过ETEditor,开发者可以更加方便地管理游戏资源和实体,提高开发效率。

ETModel是一个基于ECS(Entity-Component-System)架构的游戏开发框架,主要包括以下几个部分:

      1. Entity:实体,代表游戏中的一个具体对象,由一个或多个组件组成。

      2. Component:组件,代表实体的某个属性或行为,例如位置、移动、碰撞等。

      3. System:系统,处理实体的组件,例如移动系统、碰撞系统等。

      4. Event:事件,用于实体之间的通信和协作。

具体代码解释如下:

      1. Entity:

Entity类定义了实体的基本属性和方法,例如实体ID、组件列表、添加和移除组件等。

Copy
public sealed class Entity : IDisposable
{
    public long Id { get; }
    private readonly Dictionary<Type, Component> components = new Dictionary<Type, Component>();

    public Entity(long id)
    {
        this.Id = id;
    }

    public T AddComponent<T>() where T : Component, new()
    {
        T component = new T();
        component.Entity = this;
        this.components.Add(typeof(T), component);
        Game.EventSystem.Awake(component);
        return component;
    }

    public T GetComponent<T>() where T : Component
    {
        Component component;
        this.components.TryGetValue(typeof(T), out component);
        return component as T;
    }

    public void RemoveComponent<T>() where T : Component
    {
        Component component;
        this.components.TryGetValue(typeof(T), out component);
        if (component == null)
        {
            return;
        }
        this.components.Remove(typeof(T));
        Game.EventSystem.Destroy(component);
    }

    public void Dispose()
    {
        foreach (Component component in this.components.Values)
        {
            Game.EventSystem.Destroy(component);
        }
        this.components.Clear();
    }
}
      1. Component:

Component类定义了组件的基本属性和方法,例如所属实体、组件类型、更新方法等。

Copy
public abstract class Component : IDisposable
{
    public Entity Entity { get; set; }

    public virtual Type GetType()
    {
        return this.GetType();
    }

    public virtual void Awake()
    {
    }

    public virtual void Start()
    {
    }

    public virtual void Update()
    {
    }

    public virtual void LateUpdate()
    {
    }

    public virtual void OnDestroy()
    {
    }

    public virtual void Dispose()
    {
    }
}
      1. System:

System类定义了系统的基本属性和方法,例如处理的组件类型、更新方法、事件处理等。

Copy
public abstract class ComponentSystem
{
    public Type Type { get; }
    public abstract Type[] TypeFilter { get; }

    public virtual void Awake(Component component)
    {
    }

    public virtual void Start(Component component)
    {
    }

    public virtual void Update(Component component)
    {
    }

    public virtual void LateUpdate(Component component)
    {
    }

    public virtual void OnDestroy(Component component)
    {
    }

    public virtual void OnEvent(Component component, IEvent e)
    {
    }

    public abstract void Run(object o);
}
      1. Event:

Event类定义了事件的基本属性和方法,例如事件类型、发送者、接收者等。

Copy
public interface IEvent
{
    Type Type { get; }
    object Sender { get; }
    object Receiver { get; }
}

总之,ETModel提供了一套完整的ECS游戏开发框架,可以方便地实现游戏对象的创建、更新、销毁等操作,并且具有高效和可扩展性等优点。

 

  1. ETModel.Session

Session是指客户端和服务器之间的一次连接。ETModel.Session类封装了一些与Session相关的方法和属性,例如Send、IsConnected、RemoteAddress等。开发者可以通过Session实现客户端和服务器之间的网络通信。

  1. ETModel.MessageDispatcher

MessageDispatcher是消息分发器,用于处理网络消息。ETModel.MessageDispatcher类封装了一些与消息分发相关的方法和属性,例如Register、Dispatch等。开发者可以通过MessageDispatcher实现消息的注册和分发。

  1. ETModel.RpcHandler

RpcHandler是远程过程调用(RPC)处理器,用于处理RPC请求。ETModel.RpcHandler类封装了一些与RPC相关的方法和属性,例如Register、Handle等。开发者可以通过RpcHandler实现RPC的注册和处理。

  1. ETModel.KChannel

KChannel是基于KCP协议实现的可靠UDP传输通道。ETModel.KChannel类封装了一些与KCP通道相关的方法和属性,例如Send、Update、Disconnect等。开发者可以通过KChannel实现基于KCP协议的网络通信。

  1. ETModel.KService

KService是KCP服务,用于管理KCP通道。ETModel.KService类封装了一些与KCP服务相关的方法和属性,例如Add、Remove等。开发者可以通过KService实现KCP通道的管理。

  1. ETModel.Message

Message是消息类,用于封装网络消息。ETModel.Message类封装了一些与消息相关的方法和属性,例如Opcode、Bytes等。开发者可以通过Message实现网络消息的封装和解析。