版本: Unity 6 (6000.0)
语言English
  • C#

AnimatorController.CreateStateMachineBehaviour

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交,但我们确实阅读了用户提出的每个建议更改,并在适用时进行更新。

关闭

提交失败

由于某些原因,您的建议更改无法提交。请<a>稍后再试</a>。感谢您抽出时间帮助我们提高 Unity 文档的质量。

关闭

取消

声明

public static int CreateStateMachineBehaviour(MonoScript script);

参数

script 要实例化的 MonoScript 类。

返回值

int 返回创建对象的实例 ID,如果某些内容无效则返回 0。

描述

此函数将根据此脚本中定义的类创建 StateMachineBehaviour 实例。

此函数将验证单脚本是否为有效的状态机行为,该类必须是 StateMachineBehaviour 的子类,并且不能是泛型。其他资源:StateMachineBehaviour

using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;

public class AddSMB { public void DoAddStateMachineBehaviour(UnityEditor.Animations.AnimatorState state, MonoScript monoScript) { if (state == null) return;

int instanceID = AnimatorController.CreateStateMachineBehaviour(monoScript); if (instanceID == 0) { Debug.LogError("Could not create state machine behaviour " + monoScript.name); return; }

state.AddStateMachineBehaviour(monoScript.GetClass());

var obj = EditorUtility.InstanceIDToObject(instanceID); if (obj == null) Debug.LogError("No object could be found with instance id: " + instanceID); else AssetDatabase.AddObjectToAsset(obj, state.ToString()); } }