Version: 1.7
语言 : 中文
Animation 节点介绍
Collections 节点详解

CodeBase 节点介绍

CodeBase 节点是通过反射 Unity 内置 C# 类库及工程中的自定义 C# 类、结构体及其成员(方法、字段)后,经过筛选生成的。主要分为以下几类:CreateMemberSetGetEnum

Create(创建)节点

  • 功能:用于创建新的 struct(结构体)或 class(类)实例。
  • 使用方式:通过调用目标类型的构造函数实现。
  • 适用范围:仅可在 EventGraphFunction 中使用。
  • 重要提示
    • 此节点强烈建议仅在 OnStart 等初始化事件中使用
    • 若在持续执行的逻辑中调用,会不断创建新实例,除非显式销毁,否则可能导致性能或内存问题。
Create 节点示例(创建 String 实例)
Create 节点示例(创建 String 实例)

Member(成员方法)节点

  • 功能:调用某个 structclass 的成员方法。
  • 适用范围:仅可在 EventGraphFunction 中使用。
  • 执行流要求复杂的成员方法必须在执行流(具有 PreNext 引脚)中调用,以确保严格的执行顺序控制。
需要执行流控制的复杂成员方法节点
需要执行流控制的复杂成员方法节点
  • 例外情况:纯计算型方法(如 Mathf 类中的运算方法)无需执行流,可在 AnimGraph 中使用。
无需执行流的纯计算型成员方法节点
无需执行流的纯计算型成员方法节点

Set(设置变量)节点

  • 功能:设置某个 structclass 实例的成员字段值。
  • 输入:原始实例、待设置的新值。
  • 输出:修改后的新实例(对于结构体)或引用(对于类)。
  • 适用范围:仅可在 EventGraphFunction 中使用。
  • 执行流要求复杂操作必须置于执行流(具有 PreNext 引脚)中,以保证严格的执行顺序。
Set 节点示例
Set 节点示例

Get(获取变量)节点

  • 功能:获取某个 structclass 实例的成员字段值。
  • 适用范围:可在 AnimGraphEventGraphFunction 中使用。
  • 特点:通常无需执行流控制。
Get 节点示例
Get 节点示例

Enum(枚举)节点

  • 功能:提供特定枚举类型的可选值作为输出。
  • 适用范围:可在 AnimGraphEventGraphFunction 中使用。
Enum 节点示例
Enum 节点示例

枚举节点配置

  1. Inspector 设置
    • 在 AnimGraph 的 Inspector 中配置 Enum 节点。
    • Use Input 选项
      • 勾选:将输入引脚接收的 Int转换为对应的枚举值输出。
      • 取消勾选:直接输出在下方选择的特定枚举常量(如图中输出 None)。
    Enum 节点的 Inspector 配置面板
    Enum 节点的 Inspector 配置面板
  2. 枚举转整型
    • 操作:右键点击 Enum 节点,选择 Add EnumToInt Node
    添加 EnumToInt 转换节点的右键菜单
    添加 EnumToInt 转换节点的右键菜单
    • 结果:创建一个专属的转换节点,将当前枚举值转换为对应的 Int 值。
    创建的专属 EnumToInt 转换节点
    创建的专属 EnumToInt 转换节点

反射范围说明

基础程序集范围

反射机制可访问以下核心程序集(Assemblies): - 基础类库
mscorlib
Assembly-CSharp-firstpass
Assembly-CSharp

  • 动画系统专用
    cn.tuanjie.AnimGraph.Runtime

  • Unity引擎核心模块
    UnityEngine
    UnityEngine.CoreModule
    UnityEngine.PhysicsModule
    UnityEngine.Physics2DModule
    UnityEngine.AudioModule
    UnityEngine.AnimationModule

  • 输入系统
    Unity.InputSystem

基础类型支持

可直接反射访问的基础类型包括:

基础数据类型

  • object, bool, int, float, string

数学相关

  • Vector2, Vector3, Vector4
  • Quaternion, Matrix4x4
  • Rect, Bounds, Color
  • AnimationCurve, LayerMask

物理系统

  • Ray, Ray2D
  • RaycastHit, RaycastHit2D
  • ContactPoint, ContactPoint2D
  • ParticleCollisionEvent

Unity核心组件

  • GameObject, Transform
  • CharacterController, AnimatorStateInfo
  • AudioSource, AudioMixerGroup

系统功能

  • Application, Scene, SceneManager
  • Time, Random, Debug
  • Input, Touch, Screen, Cursor
  • Physics, Physics2D, NavMesh
  • GUI, GUILayout, GUIUtility
  • Gizmos

接口与异常

  • IList, IDictionary
  • Exception

Missing Node

当反射机制没成功反射出某个方法或变量时,而这个方法或变量已经在AnimGraph创建,这个节点会变成missing node。runtime下不会执行任何指令。

MissingNode样式
MissingNode样式
Animation 节点介绍
Collections 节点详解