Loading...
Loading...
Compare original and translation side by side
| Engine | Model | Entity | Component | System |
|---|---|---|---|---|
| Unity | Component-Based | GameObject | MonoBehaviour | Manager scripts or DOTS Systems |
| Unreal | Actor-Component | AActor | UActorComponent | Tick functions or Subsystems |
| Godot | Node Tree | Node | Child Nodes | _process/_physics_process |
| Three.js | Scene Graph | Object3D | userData / custom classes | Game loop update functions |
| Orleans | Virtual Actor | Grain | Grain State / Interfaces | Grain methods + Timers |
| 引擎 | 模型 | 实体 | 组件 | 系统 |
|---|---|---|---|---|
| Unity | 基于组件 | GameObject | MonoBehaviour | 管理器脚本或DOTS Systems |
| Unreal | Actor-Component | AActor | UActorComponent | Tick函数或子系统 |
| Godot | 节点树 | Node | 子节点 | _process/_physics_process |
| Three.js | 场景图 | Object3D | userData / 自定义类 | 游戏循环更新函数 |
| Orleans | 虚拟Actor | Grain | Grain State / 接口 | Grain方法 + 计时器 |
| Engine | Implementation |
|---|---|
| Unity | ScriptableObject-based states, or Animator for simple cases |
| Unreal | Gameplay Ability System, or custom UObject state classes |
| Godot | Node-based states as children of StateMachine node |
| Three.js | TypeScript classes with enter/exit/update methods |
| Orleans | Grain state + explicit transitions in grain methods |
State {
enter() // Called when entering this state
exit() // Called when leaving this state
update(dt) // Called every frame while in this state
}
StateMachine {
currentState: State
transition(newState) {
currentState.exit()
newState.enter()
currentState = newState
}
}| 引擎 | 实现方式 |
|---|---|
| Unity | 基于ScriptableObject的状态,或简单场景下使用Animator |
| Unreal | Gameplay Ability System,或自定义UObject状态类 |
| Godot | 基于节点的状态,作为StateMachine节点的子节点 |
| Three.js | 包含enter/exit/update方法的TypeScript类 |
| Orleans | Grain状态 + Grain方法中的显式状态转换 |
State {
enter() // 进入该状态时调用
exit() // 离开该状态时调用
update(dt) // 处于该状态时每帧调用
}
StateMachine {
currentState: State
transition(newState) {
currentState.exit()
newState.enter()
currentState = newState
}
}| Engine | Mechanism |
|---|---|
| Unity | C# events, UnityEvent, ScriptableObject event channels |
| Unreal | Delegates (DECLARE_DELEGATE), BlueprintAssignable events |
| Godot | Signals (built-in, first-class) |
| Three.js | EventDispatcher, custom EventEmitter, or RxJS |
| Orleans | Orleans Streams, IGrainObserver |
| 引擎 | 机制 |
|---|---|
| Unity | C#事件、UnityEvent、ScriptableObject事件通道 |
| Unreal | 委托(DECLARE_DELEGATE)、BlueprintAssignable事件 |
| Godot | 信号(内置一等公民特性) |
| Three.js | EventDispatcher、自定义EventEmitter或RxJS |
| Orleans | Orleans Streams、IGrainObserver |
| Engine | Strategy |
|---|---|
| Unity | Queue<GameObject>, SetActive(true/false) |
| Unreal | FActorPoolingSystem or custom TArray<AActor*> pool |
| Godot | Array of nodes, set visible/process_mode |
| Three.js | Array of Object3D, toggle visible property |
| Orleans | Not applicable (grains are virtual, always "exist") |
| 引擎 | 策略 |
|---|---|
| Unity | Queue<GameObject>,调用SetActive(true/false) |
| Unreal | FActorPoolingSystem或自定义TArray<AActor*>池 |
| Godot | 节点数组,设置visible/process_mode |
| Three.js | Object3D数组,切换visible属性 |
| Orleans | 不适用(Grain是虚拟的,始终“存在”) |
| Engine | Built-in | Model |
|---|---|---|
| Unity | Netcode for GameObjects, Mirror, FishNet | Server-authoritative, client prediction |
| Unreal | Built-in replication | Server-authoritative, property replication, RPCs |
| Godot | MultiplayerPeer, MultiplayerSynchronizer | Server-authoritative or peer-to-peer |
| Three.js | None (use WebSocket/WebRTC) | Custom, typically server-authoritative |
| Orleans | Built-in (virtual actors) | Server-authoritative by design |
| 引擎 | 内置支持 | 模型 |
|---|---|---|
| Unity | Netcode for GameObjects、Mirror、FishNet | 服务器权威、客户端预测 |
| Unreal | 内置复制机制 | 服务器权威、属性复制、RPC |
| Godot | MultiplayerPeer、MultiplayerSynchronizer | 服务器权威或点对点 |
| Three.js | 无内置(使用WebSocket/WebRTC) | 自定义实现,通常为服务器权威 |
| Orleans | 内置(虚拟Actor) | 设计上默认服务器权威 |
| Engine | Strategy |
|---|---|
| Unity | JsonUtility or custom serialization to PlayerPrefs/files |
| Unreal | USaveGame with UGameplayStatics::SaveGameToSlot |
| Godot | ConfigFile or custom JSON/Resource serialization |
| Three.js | JSON serialization to localStorage or server API |
| Orleans | Built-in grain persistence (automatic with IPersistentState) |
| 引擎 | 策略 |
|---|---|
| Unity | JsonUtility或自定义序列化到PlayerPrefs/文件 |
| Unreal | USaveGame结合UGameplayStatics::SaveGameToSlot |
| Godot | ConfigFile或自定义JSON/Resource序列化 |
| Three.js | JSON序列化到localStorage或服务器API |
| Orleans | 内置Grain持久化(结合IPersistentState自动实现) |
| Engine | System |
|---|---|
| Unity | New Input System (InputAction) or legacy Input class |
| Unreal | Enhanced Input System (UInputAction, UInputMappingContext) |
| Godot | InputMap with named actions, Input.is_action_pressed() |
| Three.js | Custom abstraction over DOM events (keyboard, mouse, gamepad API) |
| 引擎 | 系统 |
|---|---|
| Unity | New Input System(InputAction)或旧版Input类 |
| Unreal | Enhanced Input System(UInputAction、UInputMappingContext) |
| Godot | 带命名动作的InputMap,使用Input.is_action_pressed() |
| Three.js | 基于DOM事件(键盘、鼠标、游戏手柄API)的自定义抽象 |
| Engine | System |
|---|---|
| Unity | AudioSource + AudioListener, FMOD/Wwise for complex projects |
| Unreal | Sound Cues, MetaSounds (UE5), Wwise integration |
| Godot | AudioStreamPlayer2D/3D, AudioBus system |
| Three.js | Three.js AudioListener + PositionalAudio, or Howler.js |
| 引擎 | 系统 |
|---|---|
| Unity | AudioSource + AudioListener,复杂项目使用FMOD/Wwise |
| Unreal | Sound Cues、MetaSounds(UE5)、Wwise集成 |
| Godot | AudioStreamPlayer2D/3D、AudioBus系统 |
| Three.js | Three.js AudioListener + PositionalAudio,或Howler.js |
| Engine | System | 2D | 3D |
|---|---|---|---|
| Unity | PhysX (3D), Box2D (2D) | Rigidbody2D, Collider2D | Rigidbody, Collider |
| Unreal | Chaos Physics | N/A (use Paper2D) | UPrimitiveComponent physics |
| Godot | GodotPhysics, Jolt | RigidBody2D, Area2D | RigidBody3D, Area3D |
| Three.js | None built-in | cannon-es, rapier2d | rapier3d, ammo.js |
| 引擎 | 系统 | 2D | 3D |
|---|---|---|---|
| Unity | PhysX(3D)、Box2D(2D) | Rigidbody2D、Collider2D | Rigidbody、Collider |
| Unreal | Chaos Physics | N/A(使用Paper2D) | UPrimitiveComponent物理 |
| Godot | GodotPhysics、Jolt | RigidBody2D、Area2D | RigidBody3D、Area3D |
| Three.js | 无内置 | cannon-es、rapier2d | rapier3d、ammo.js |
| Engine | System | Technology |
|---|---|---|
| Unity | UGUI (Canvas) or UI Toolkit | C# + XML (UI Toolkit) or Inspector-based |
| Unreal | UMG (Unreal Motion Graphics) | Blueprints + Slate (C++) |
| Godot | Control nodes (built-in) | Theme resources + GDScript |
| Three.js | HTML/CSS overlay or drei/Html | React components or DOM |
| 引擎 | 系统 | 技术栈 |
|---|---|---|
| Unity | UGUI(Canvas)或UI Toolkit | C# + XML(UI Toolkit)或基于Inspector |
| Unreal | UMG(Unreal Motion Graphics) | Blueprints + Slate(C++) |
| Godot | 内置Control节点 | Theme资源 + GDScript |
| Three.js | HTML/CSS叠加层或drei/Html | React组件或DOM |