Unity-Animator 浅析StateMachineBehaviour初始化时间测试

Unity-Animator 浅析StateMachineBehaviour初始化时间测试

结果和想的有点出入 测试结果: 1.SMB初始化会被调用多次,次数不可控,当Animator组件重复开关则重复初始化。 2.SMB支持构造函数 MyClass public class MyClass { public MyClass() { Debug.Log("Init!"); } } TestSMB public class TestSMB : StateMachineBehaviour { public MyClass obj = new MyClass()...

unity3d跑酷游戏的一些bug总结

近期将之前的跑酷游戏demo拿出来重新做了一遍,解决了之前2个遗留bug。 虽然罪魁祸首都是FixedUpdate,但细节又不太一样。这里记录一下 1.点击空格键,角色会跳跃。而有时会跳的比之前高很多(使用Rigidbody.AddForce) 解决: AddForce之前应该清一下速率,因为是射线...

Unity编辑器状态清空控制台信息示例

Debug.ClearDeveloperConsole()也可以用,但稍麻烦些。 public static void ClearConsole() { var assembly = System.Reflection.Assembly.GetAssembly(typeof(UnityEditor.ActiveEditorTracker)); var type = assembly.GetType("UnityEditorInternal.Log...

Unity-Animator控制IK示例

Unity-Animator控制IK示例

要让代码控制IK,需要先在An imator中打开IK pass 然后,和IK相关的代码需要放到相应的函数中去: void OnAnimatorIK() { Debug.Log("OnAnimatorIK"); } 而如果是StateMachineBehaviour,IK操控的代码是在: public override void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnStateI...

Unity中使用DebuggerHidden特性示例

经过测试,DebuggerHidden只对输出的日志有影响。对编辑器的控制台输入没有影响 你可以通过这个特性避免日志log有一堆的堆栈信息 并且测试过发现Debug.LogError也不支持该特性,和Debug.Log一样没有堆栈跟踪 只有抛出异常才会有堆栈跟踪 log输出: Exception: !!! ...

Unity-Animato浅析FloatValue阻尼

Unity-Animato浅析FloatValue阻尼

Animator的SetFloat接口可以设置阻尼,并且4种类型变量只有float是支持阻尼的。 public void SetFloat(int id, float value, float dampTime, float deltaTime); 当设置阻尼为0.2时 if (direction > 0) direction = 1; else direction = 0; Debug.Log("Direction: " + direction); animator.SetFloat("Direction", direction, 0.2f, ...

Unity-Animator浅析deltaPosition&deltaRotation

Unity-Animator浅析deltaPosition&deltaRotation

官方文档给出的信息非常含糊 Gets the avatar delta position for the last evaluated frame. 测试了一下,首先必须是含有根运动的动画,才会得到DeltaPosition/DeltaRotation的值,这个值是相对于上一帧的根运动位置 并且非人形动画也可以获得该值 对于修改根骨骼位移RootMotion,会用到这两个参数 该值不可修改,不受StateMachineBehavio...

Unity-Animator StateMachineBehaviour状态机脚本学习

Unity-Animator StateMachineBehaviour状态机脚本学习

首先这个脚本必须继承自StateMachineBehaviour // 第一unity3d www.1unity3d.com public class MySMB : StateMachineBehaviour { public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex) { base.OnStateEnter(animator, stateInfo, layerIndex); Debug.Log(...

unity3d Animation.Sample用法介绍

unity3d Animation.Sample用法介绍

如果想让Animation在编辑器状态下预览,也可以用这个接口 当你想要直接获得动画的运行结果,而不是等帧数执行到这,这时候就得调用Sample: void LateUpdate() { Debug.Log("frame: " + Time.frameCount + " position: " + transform.position); var state = anim["Anim2"]; state.normalizedTime = 5f; anim.Sample();...

Unity-Animator录制与回放

Unity-Animator录制与回放

Animator自带了简单的动画录制,回放功能。但可惜的是不支持持久化的数据输出。因而不能作为录像保存 不过这种可以作为竞速,格斗类游戏在结束时经常出现的游戏回放,还是比较有用的 测试所用脚本: using UnityEngine; // 第一unity3d www.1unity3d.com public class AnimatorRecordingExample : MonoBehaviour { public Animator...