using UnityEngine;publicclassPlayer:MonoBehaviour{Animator anim;int speedID=Animator.StringToHash("Speed");int isSpeedupID=Animator.StringToHash("isSpeedup");voidStart(){anim=GetComponent<Animator>();}voidUpdate(){anim.SetFloat(speedID,Input.GetAxis("Vertical"));if(Input.GetKeyDown(KeyCode.LeftShi...
在我们使用Unity的Animator Controller时,会遇到对状态机参数的设置,一般的时候,我们会直接使用SetBool(string,true)的形式来对属性值进行赋值,但是变量过多的时候,自己有可能会忘记,毕竟没有字符串的补全功能,而且值多了以后会设置String的方法效率比较低,会通过使用HashID的形式代替字符串进行索引设置。
在我们使用Unity的Animator Controller时,会遇到对状态机参数的设置,一般的时候,我们会直接使用SetBool(string,true)的形式来对属性值进行赋值,但是变量过多的时候,自己有可能会忘记,毕竟没有字符串的补全功能,而且值多了以后会设置String的方法效率比较低,会通过使用HashID的形式代替字符串进行索引设置。
为了速度,所有属性名称都被哈希为属性ID,并且这些ID实际上被用于寻址属性。 每当在Animator、Material或Shader上使用Set或Get方法时,请使用整数值方法而不是字符串值方法。字符串方法只是执行字符串哈希,然后将哈希ID转发到整数值方法。 对于Animator属性名称,请使用Animator.StringToHash,对于Material和Shader属性名称,请使...
public Animator animator; private float verticalspeed = 0; private PlayerInput playerInput; private Vector3 move; //当前动画信息 private AnimatorStateInfo currentStateInfo; //获取指定动画 //private int idleHash = Animator.StringToHash("Idle_A"); ...
hash 是 Animator.StringToHash(name),name 为 StateMachine.name hash 为 状态机前缀 和 AnimatorState.name 转换而来,等价于 fullPathHash 递归添加 StateMachine mStateIndexLookup 是 Dictionary<int, int> 类型,主要作用是将 State / Clip / State Machine 生成的 Hash 形成了树状结构,mStateNames 是显示编辑...
int isWalkingHash; //更简单的存储方式 Hash值 int isRunningHash; //更简单的存储方式 Hash值 // Start is called before the first frame update void Start() { animator = GetComponent<Animator>(); isWalkingHash = Animator.StringToHash("IsWalking");//将Hash值代表IsWalking ...
在这些函数中,Animator.StringToHash()和Shader.PropertyToID()被执行以将字符串转换为唯一的标识值。由于在多次访问站点时每次都执行转换是浪费的,因此缓存标识值并重复使用它。如下面的示例所示,为了便于使用,建议定义一个列出缓存标识值的类。 代码语言:javascript ...
Animator.StringToHash;:把Speed字符串转化为HashID。 private int speedID = Animator.StringToHash("Speed"); anim.SetFloat(speedID, Input.GetAxis("Vertical")); ==>等效于 anim.SetFloat("Speed", Input.GetAxis("Vertical")); 这样转换后更不容易出错,更高效,推荐使用!!! 3...
_animIDSpeed = Animator.StringToHash("Speed"); _animIDGrounded = Animator.StringToHash("Grounded"); _animIDJump = Animator.StringToHash("Jump"); _animIDFreeFall = Animator.StringToHash("FreeFall"); _animIDMotionSpeed = Animator.StringToHash("MotionSpeed"); ...