之前在做动画处理的时候一直用的是字符串,最近看案例的时候发现了Animator.StringToHash-----通过Hash ID进行引用,Animator.StringToHash把字符串转换成Hash ID。通过“Hash ID”更有优势,因为不容易出错,且更加高效。
两种的使用方式不同。animation状态或者parameters的字符串(Tag)需要通过对象使用;但是“Hash ID”不需要,是Animator的静态方法。
下面是示例代码
public class GameConsts
{
//速度参数【speed】
public static int SPEED_PARAM;
//角速度参数【angularSpeed】
public static int ANGULARSPEED_PARAM;
//潜行参数【sneak】
public static int SNEAK_PARAM;
//喊叫参数,也是喊叫状态【shout】
public static int SHOUT_PARAM;
//开关门参数【doorOpen】
public static int DOOROPEN_PARAM;
//运动状态【locomotion】
public static int LOCOMOTION_STATE;
//能否看到玩家【playerInSight】
public static int PLAYERINSIGHT_PARAM;
//射击状态
public static int WEAPONSHOOT_STATE;
//射击抬手状态
public static int WEAPONRAISE_STATE;
//死亡动画状态
public static int DEAD_STATE;
static GameConsts()
{
SPEED_PARAM = Animator.StringToHash("Speed");
ANGULARSPEED_PARAM = Animator.StringToHash("AngularSpeed");
SNEAK_PARAM = Animator.StringToHash("Sneak");
SHOUT_PARAM = Animator.StringToHash("Shout");
DOOROPEN_PARAM = Animator.StringToHash("DoorOpen");
LOCOMOTION_STATE = Animator.StringToHash("Locomotion");
PLAYERINSIGHT_PARAM = Animator.StringToHash("PlayerInSight");
WEAPONRAISE_STATE = Animator.StringToHash("WeaponRaise");
WEAPONSHOOT_STATE = Animator.StringToHash("WeaponShoot");
DEAD_STATE = Animator.StringToHash("Dead");
}
}