AnimationMode采样Animator或Animation
来源:互联网 发布:怎样进入淘宝卖家中心 编辑:程序博客网 时间:2024/06/06 04:08
FBX生成预制体参考:点击打开链接
旧版Animation采样:点击打开链接
采样的目的
1)用户可以自定义游戏动作的播放,甚至动作拼接动作剪裁等操作
2)AnimationEvent的自定义
3)编辑器中使用,进行动作预览
using System;using UnityEditor;using UnityEngine;public class SkillEditor : EditorWindow { protected GameObject go; protected AnimationClip animationClip; protected float time = 0.0f; protected bool lockSelection = false; protected bool animationMode = false; [MenuItem("Example/SkillEditor", false, 2000)] public static void DoWindow() { //var window = GetWindowWithRect<SkillEditor>(new Rect(0, 0, 800, 1000)); //window.Show(); SkillEditor window = EditorWindow.GetWindow<SkillEditor>(true,"",true); window.position = new Rect(Screen.currentResolution.width / 2 - 300, Mathf.Max(5, Screen.currentResolution.height / 3 - 150), 600, 400); window.titleContent = new GUIContent("技能编辑器"); } public void OnSelectionChange() { if (!lockSelection) { go = Selection.activeGameObject; Repaint(); } } public void OnGUI() { if (go == null) { EditorGUILayout.HelpBox("Please select a GameObject", MessageType.Info); return; } GUILayout.BeginHorizontal(); EditorGUI.BeginChangeCheck(); GUILayout.Toggle(AnimationMode.InAnimationMode(), "Animate"); if (EditorGUI.EndChangeCheck()) ToggleAnimationMode(); GUILayout.FlexibleSpace(); lockSelection = GUILayout.Toggle(lockSelection, "Lock"); GUILayout.EndHorizontal(); EditorGUILayout.BeginVertical(); animationClip = EditorGUILayout.ObjectField(animationClip, typeof(AnimationClip), false) as AnimationClip; if (animationClip != null) { float startTime = 0.0f; float stopTime = animationClip.length; time = EditorGUILayout.Slider(time, startTime, stopTime); } else if (AnimationMode.InAnimationMode()) { AnimationMode.StopAnimationMode(); } EditorGUILayout.EndVertical(); } void Update() { if (go == null) return; if (animationClip == null) { return; } Animator animator = go.GetComponent<Animator>(); if (animator != null && animator.runtimeAnimatorController == null) { return; } if (animator == null) { Animation animation = go.GetComponent<Animation>(); if (animation == null) { return; } } if (!EditorApplication.isPlaying && AnimationMode.InAnimationMode()) { AnimationMode.BeginSampling(); AnimationMode.SampleAnimationClip(go, animationClip, time); AnimationMode.EndSampling(); SceneView.RepaintAll(); } } void ToggleAnimationMode() { if (AnimationMode.InAnimationMode()) { AnimationMode.StopAnimationMode(); } else { AnimationMode.StartAnimationMode(); } }}
0 0
- AnimationMode采样Animator或Animation
- Unity Animator采样和Animation采样
- Android:Animator and Animation
- animation和animator
- Animation's Brother ---- Animator
- animation animator controller
- Animation,Animator学习
- Android动画Animation/Animator/LayoutTransition
- Object Animator和Tween Animation
- Unity Animator与Animation对比
- android之animator 和animation 的区别
- 【Unity3d】Animator和Animation组件使用注意事项
- 浅谈android Animation Animator 的实现原理
- Animator与Animation之间的互转
- 【Unity3d】Animator和Animation组件使用注意事项
- Unity3d 浅析Animation与Animator组件[小白篇]
- Android中AnimationDrawable,Animator和Animation
- Animation和Animator的简单区别
- linux 创建用户
- 初识nodeJs
- 这个原文翻译的有问题!!!!
- JSP
- linux 分区理解
- AnimationMode采样Animator或Animation
- 一个epoll实例
- 高位数求和不使用BigDecimal
- 剑指offer-变态跳青蛙-DP
- WiFi驱动(1)框架解析
- 微信公众号2017年发展趋势分析解读
- 小谈应该如何对抗网络小说
- 【c++】实现"String"类,完成运算符重载等
- 栈和堆的区别