//各MMDにモーション等追加 public void SetMMDOptions() { //表情リスト作成 MMD4MecanimAnimMorphHelper.Anim[] animations = new MMD4MecanimAnimMorphHelper.Anim[ExpressionName.Length]; for (int i = 0; i < animations.Length; i++) { //1曲ごとのforループ animations[i] = new MMD4MecanimAnimMorphHelper.Anim(); animations[i].animName = ExpressionName[i]; animations[i].animFile = Resources.Load <TextAsset>("Music&Motion/" + ExpressionName[i] + ".anim"); animations[i].audioClip = Resources.Load <AudioClip>("Music&Motion/" + MusicName[i + 1]); } //各MMDにオプション追加 for (int i = 0; i < MMDModel.Length; i++) { //MMDごとのforループ MMDModel[i].GetComponent <Animator>().runtimeAnimatorController = Resources.Load <RuntimeAnimatorController>("Animation/AC_motion"); MMDModel[i].GetComponent <MMD4MecanimModel>().physicsEngine = MMD4MecanimModelImpl.PhysicsEngine.BulletPhysics; MMDModel[i].GetComponent <MMD4MecanimAnimMorphHelper>().animList = animations; } }
public override void OnInspectorGUI() { MMD4MecanimAnimMorphHelper animMorphHelper = this.target as MMD4MecanimAnimMorphHelper; EditorGUILayout.Separator(); animMorphHelper.animName = EditorGUILayout.TextField("Anim Name", animMorphHelper.animName); animMorphHelper.playingAnimName = EditorGUILayout.TextField("Playing Anim Name", animMorphHelper.playingAnimName); EditorGUILayout.Separator(); animMorphHelper.animEnabled = EditorGUILayout.Toggle("Enabled", animMorphHelper.animEnabled); animMorphHelper.animPauseOnEnd = EditorGUILayout.Toggle("Pause On End", animMorphHelper.animPauseOnEnd); animMorphHelper.animSyncToAudio = EditorGUILayout.Toggle("Sync To Audio", animMorphHelper.animSyncToAudio); EditorGUILayout.Separator(); animMorphHelper.initializeOnAwake = EditorGUILayout.Toggle("Initialize On Awake", animMorphHelper.initializeOnAwake); animMorphHelper.morphSpeed = EditorGUILayout.FloatField("Morph Speed (Start/End)", animMorphHelper.morphSpeed); animMorphHelper.overrideWeight = EditorGUILayout.Toggle("Override Weight", animMorphHelper.overrideWeight); EditorGUILayout.Separator(); if (animMorphHelper.animList != null) { GUILayout.Label("Animations", EditorStyles.boldLabel); for (int animIndex = 0; animIndex < animMorphHelper.animList.Length;) { MMD4MecanimAnimMorphHelper.Anim anim = animMorphHelper.animList[animIndex]; EditorGUILayout.BeginHorizontal(); bool isRemove = GUILayout.Button("-", EditorStyles.miniButton, GUILayout.ExpandWidth(false)); anim.animName = EditorGUILayout.TextField("Anim Name", anim.animName); EditorGUILayout.EndHorizontal(); TextAsset animFile = anim.animFile; EditorGUILayout.BeginHorizontal(); GUILayout.Space(26.0f); animFile = (TextAsset)EditorGUILayout.ObjectField("Anim File", (Object)animFile, typeof(TextAsset), false); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Space(26.0f); anim.audioClip = (AudioClip)EditorGUILayout.ObjectField("Audio Clip", (AudioClip)anim.audioClip, typeof(AudioClip), false); EditorGUILayout.EndHorizontal(); if (animFile != null) { if (!AssetDatabase.GetAssetPath(animFile).ToLower().EndsWith(".anim.bytes")) { animFile = null; } else { if (anim.animFile != animFile) { anim.animFile = animFile; anim.animName = System.IO.Path.GetFileNameWithoutExtension(animFile.name); } } } else { isRemove = true; anim.animFile = null; } if (isRemove) { for (int i = animIndex; i + 1 < animMorphHelper.animList.Length; ++i) { animMorphHelper.animList[i] = animMorphHelper.animList[i + 1]; } System.Array.Resize(ref animMorphHelper.animList, animMorphHelper.animList.Length - 1); } else { ++animIndex; } } } EditorGUILayout.Separator(); { GUILayout.Label("Add Animation", EditorStyles.boldLabel); EditorGUILayout.BeginHorizontal(); GUILayout.Space(26.0f); TextAsset animFile = (TextAsset)EditorGUILayout.ObjectField("Anim File", (Object)null, typeof(TextAsset), false); EditorGUILayout.EndHorizontal(); if (animFile != null) { if (!AssetDatabase.GetAssetPath(animFile).ToLower().EndsWith(".anim.bytes")) { Debug.LogWarning(System.IO.Path.GetExtension(AssetDatabase.GetAssetPath(animFile)).ToLower()); animFile = null; } else { MMD4MecanimAnimMorphHelper.Anim anim = new MMD4MecanimAnimMorphHelper.Anim(); anim.animFile = animFile; anim.animName = System.IO.Path.GetFileNameWithoutExtension(animFile.name); if (animMorphHelper.animList == null) { animMorphHelper.animList = new MMD4MecanimAnimMorphHelper.Anim[1]; animMorphHelper.animList[0] = anim; } else { int animIndex = animMorphHelper.animList.Length; System.Array.Resize(ref animMorphHelper.animList, animIndex + 1); animMorphHelper.animList[animIndex] = anim; } } } } }