Skip to content

Instantly share code, notes, and snippets.

@muzudho
Last active January 27, 2019 12:22
Show Gist options
  • Save muzudho/a2f30cb6ca7ab1a506ba9978b8eb9098 to your computer and use it in GitHub Desktop.
Save muzudho/a2f30cb6ca7ab1a506ba9978b8eb9098 to your computer and use it in GitHub Desktop.
Unityで状態遷移を組むときに使うアニメーター・コントローラーを作成するC#スクリプトのソースコード ref: http://qiita.com/muzudho1/items/d2a76d79b8a6b8437897
using UnityEditor;
using UnityEditor.Animations;
using UnityEngine;
/// <summary>
/// 開発中に使うメニュー
/// </summary>
public class ToolMenu {
#region アニメーター・コントローラー編集
/// <summary>
/// アニメーター・コントローラーの編集
/// </summary>
[MenuItem("Tool/Animator Controller")]
static void AnimatorController()
{
AnimatorController ac = AssetDatabase.LoadAssetAtPath<AnimatorController>("Assets/Resources/AnimatorControllers/AniCon@Char3.controller");
}
#endregion
}
/// <summary>
/// アニメーター・コントローラーの編集
/// </summary>
[MenuItem("Tool/Animator Controller")]
static void AnimatorController()
{
AnimatorController ac = AssetDatabase.LoadAssetAtPath<AnimatorController>("Assets/Resources/AnimationClips/Player.controller");
Debug.Log("パラメーター数 = " + ac.parameters.Length);
foreach (AnimatorControllerParameter parameter in ac.parameters) {Debug.Log("引数 = " + parameter.name);}
Debug.Log("レイヤー数 = " + ac.layers.Length);
foreach (AnimatorControllerLayer layer in ac.layers)//レイヤー
{
Debug.Log("レイヤー = "+ layer.name);
foreach (ChildAnimatorStateMachine stateMachine_wrapper in layer.stateMachine.stateMachines)//ステートマシン
{
AnimatorStateMachine stateMachine = stateMachine_wrapper.stateMachine;
Debug.Log("ステートマシン = " + stateMachine.name + " ステート数 = " + stateMachine.states.Length);
foreach (ChildAnimatorState state_wrapper in stateMachine.states)//ステート
{
AnimatorState state = state_wrapper.state;
Debug.Log("ステート = " + state.name + " トランジション数 = " + state.transitions.Length);
foreach (AnimatorStateTransition transition in state.transitions)//トランジション
{
if (null != transition.destinationState)
{
Debug.Log("遷移先 = " + transition.destinationState.name);
}
else
{
Debug.Log("遷移先なし");
}
}
}
}
}
}
/// <summary>
/// アニメーター・コントローラーの編集
/// </summary>
[MenuItem("Tool/Animator Controller")]
static void AnimatorController()
{
AnimatorController ac = AssetDatabase.LoadAssetAtPath<AnimatorController>("Assets/Resources/AnimationClips/Player.controller");
foreach (AnimatorControllerLayer layer in ac.layers)//レイヤー
{
foreach (ChildAnimatorStateMachine stateMachine_wrapper in layer.stateMachine.stateMachines)//ステートマシン
{
AnimatorStateMachine stateMachine = stateMachine_wrapper.stateMachine;
foreach (ChildAnimatorState state_wrapper in stateMachine.states)//ステート
{
AnimatorState state = state_wrapper.state;
foreach (AnimatorStateTransition transition in state.transitions)//トランジション
{
if (0!= transition.exitTime)
{
Debug.Log("遷移先 " + (null != transition.destinationState ? transition.destinationState.name : "なし") + " のトランジションの exitTime = " + transition.exitTime + " を 0 にします");
transition.exitTime = 0;
}
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment