# com.gameframex.unity.entity
**Repository Path**: gameframex/com.gameframex.unity.entity
## Basic Information
- **Project Name**: com.gameframex.unity.entity
- **Description**: GameFrameX Unity Entity component implementing ECS-like entity management with component architecture and lifecycle control
- **Primary Language**: Unknown
- **License**: Apache-2.0
- **Default Branch**: main
- **Homepage**: https://gameframex.doc.alianblank.com
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2024-07-23
- **Last Updated**: 2026-07-03
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README

# Game Frame X Entity 实体对象组件
[](https://github.com/GameFrameX/com.gameframex.unity.entity/blob/main/LICENSE.md)
[](https://github.com/GameFrameX/com.gameframex.unity.entity/releases)
[](https://unity.com/)
[](https://gameframex.doc.alianblank.com)
独立游戏前后端一体化解决方案 · 独立游戏开发者的圆梦大使
[文档](https://gameframex.doc.alianblank.com) · [快速开始](#快速开始) · QQ群: 467608841 / 233840761
[English](README.md) | **简体中文** | [繁體中文](README.zh-TW.md) | [日本語](README.ja.md) | [한국어](README.ko.md)
## 目录
- [项目简介](#项目简介)
- [核心特性](#核心特性)
- [快速开始](#快速开始)
- [安装](#安装)
- [使用示例](#使用示例)
- [1. 定义 EntityLogic](#1-定义-entitylogic)
- [2. 显示实体](#2-显示实体)
- [3. 隐藏实体](#3-隐藏实体)
- [4. 父子层级](#4-父子层级)
- [5. 订阅事件](#5-订阅事件)
- [实体生命周期](#实体生命周期)
- [架构](#架构)
- [文档与资源](#文档与资源)
- [社区与支持](#社区与支持)
- [更新日志](#更新日志)
- [开源协议](#开源协议)
## 项目简介
**Entity 实体对象组件** 提供了完整的 Unity 游戏实体管理系统。它处理实体生命周期(显示、隐藏、回收)、分组管理、父子层级关系,并集成资源系统实现异步资源加载,集成对象池实现实例复用。
基于 GameFrameX 框架构建,使用 UniTask 实现异步操作,采用 Manager-Component-Helper 分层架构。
## 核心特性
- **异步实体生成** — 基于 UniTask 异步加载并实例化实体,支持进度回调和依赖资源回调
- **实体分组** — 将实体组织到分组中,每个分组可独立配置对象池参数(容量、过期时间、自动释放间隔)
- **父子层级** — 附加/解除子实体,自动处理 Transform 父子关系
- **对象池集成** — 通过对象池复用实体实例,提升内存效率
- **事件驱动生命周期** — 订阅显示/隐藏/更新/依赖资源等事件,实现响应式工作流
- **EntityLogic 模式** — 通过继承 `EntityLogic` 实现业务逻辑,提供 OnInit/OnShow/OnHide/OnUpdate 等生命周期方法
- **实例管理** — 锁定实体实例或调整优先级以控制对象池回收策略
## 快速开始
### 安装
选择以下任一方式:
1. 编辑 Unity 项目的 `Packages/manifest.json`,添加 `scopedRegistries` 部分:
```json
{
"scopedRegistries": [
{
"name": "GameFrameX",
"url": "https://gameframex.upm.alianblank.uk",
"scopes": [
"com.gameframex"
]
}
],
"dependencies": {
"com.gameframex.unity.entity": "2.4.3"
}
}
```
`scopes` 控制哪些包通过此注册表解析。只有以 `com.gameframex` 开头的包才会从这个注册表获取。
2. 直接在 `manifest.json` 的 `dependencies` 节点下添加以下内容:
```json
{
"com.gameframex.unity.entity": "https://github.com/gameframex/com.gameframex.unity.entity.git"
}
```
3. 在 Unity 的 `Package Manager` 中使用 `Git URL` 的方式添加库,地址为:`https://github.com/gameframex/com.gameframex.unity.entity.git`
4. 直接下载仓库放置到 Unity 项目的 `Packages` 目录下,会自动加载识别。
## 使用示例
### 1. 定义 EntityLogic
创建 `EntityLogic` 子类来实现实体行为:
```csharp
using GameFrameX.Entity.Runtime;
using UnityEngine;
public class PlayerEntity : EntityLogic
{
protected internal override void OnInit(object userData)
{
base.OnInit(userData);
// 初始化组件引用等
}
protected internal override void OnShow(object userData)
{
base.OnShow(userData);
// 实体显示时调用
}
protected internal override void OnHide(bool isShutdown, object userData)
{
base.OnHide(isShutdown, userData);
// 实体隐藏时调用
}
protected internal override void OnUpdate(float elapseSeconds, float realElapseSeconds)
{
base.OnUpdate(elapseSeconds, realElapseSeconds);
// 每帧更新逻辑
}
}
```
### 2. 显示实体
使用 `EntityComponent` 异步生成实体:
```csharp
// 获取 EntityComponent
var entityComponent = GameEntry.GetComponent