public void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
参数 | 含义 |
---|
stateName | 动画状态机的某个状态名字 |
layer | 第几层的动画状态机,-1 表示播放第一个状态或者第一个哈希到的状态 |
normalizedTime | 从state动画进度的百分比(<100%)开始播放到结束 |
Unity Animator.Play 详解
-
基于 Animator 制作一个Cube旋转的帧动画
-
在 Cube 上实现调用 Play(stateName,layer,normalizedTime) 脚本
using UnityEngine;
using UnityEngine.UI;
public class BoxAnimator : MonoBehaviour {
public Animator animator;
public Button btn1;
public Button btn2;
public const float Percentage1 = 0.3f;
public const float Percentage2 = 0.7f;
void OnEnable() {
btn1.onClick.AddListener(() => animator.Play("Rotate",-1, Percentage1));
btn2.onClick.AddListener(() => animator.Play("Rotate",-1, Percentage2));
void OnDisable() {
btn1.onClick.RemoveAllListeners();
btn2.onClick.RemoveAllListeners();
脚本挂在 cube 上,设置两个按钮分别从 30% 、70% 开始播放动画直到结束动画
-
看运行效果,可以选中 cube 查看动画状态机是如何播放的,方便理解
在 Cube 上实现调用 Play(stateName,layer,normalizedTime) 脚本。脚本挂在 cube 上,设置两个按钮分别从 30% 、70% 开始播放动画直到结束动画。基于 Animator 制作一个Cube旋转的帧动画。
在
Unity中有两个
动画系统,A
nimation和A
nima
tor,它们两个虽然都是关于
动画播放的组件,但它们之间有很多的不同点。A
nimation是老版本就存在的
动画系统组件,但A
nima
tor是
unity4.6版本之后才拥有的组件;控制一个
动画的
播放一般都使用A
nimation,控制多个
动画播放一般使用A
nima
tor,因为A
nima
tor 有一个
动画控制器,俗称
动画状态机,用于切换
动画非常的方便;A
nima
tor 缺点就是占用内存比A
nimation大。
unity可以用两种方式控制动画
1 Animations,这种方式简单,直接 Play(“Idle”) 或者 CorssFade(“Idle”) 就可以播放动画
2 Animator,5.x之后推荐使用这种方式,因为里面可以加上混合动画,让动画切换更加平滑
添加状态控制参数
编辑切换状态的条件
点击连线,添加条件,这个条件只会显示刚才添加的状态控制参数 AnimState,设置等于0是...
A
nimtor.
Play("a
nim_1");
////////////////////////////////////////////////////////////////////////////////////////////
如果想要再次
播放,使用如下代码:
A
nimtor.P...
Animator.Play
函数原型
void Play(string stateName, int layer = -1, float normalizedTime = float.NegativeInfinity);
Parameters 参数 Desc...
// playThen,上个动画播放完在播发
// playWith,与上个动画同时播放
ViewAnimator.playOn(lifecyclerOwner, view)
.slideBottomIn()
$ npm install spritesheet-animator
var dataFile = JSON.parse(fs.readFileSync(__dirname + '/particle_hover.json', 'utf8'));
this.spriteAnimation = new SpritesheetAnimator();
this.spriteAnimation.init({
sprite: dataFile, //tp json file
parentEl: animationContainer, //container
folder: 'test/'
this.spriteAnimation.play(0, true);
使用前进行测试?
git clone https: //github.com/Jam3/spri
Animator.Play(layerName, -1, normalizedTime)函数用于播放动画,其中layerName参数表示播放动画的层级名称,-1表示播放动画的状态机层级默认值,normalizedTime参数表示动画的归一化时间(0到1之间)。
在使用Animator.Play函数时,可以指定播放某个层级上的动画,这个层级可以是任意的,例如可以是动作,可以是表情等等。在Animator Controller中,可以使用多个层级来进行动画混合和覆盖,通过Animator.Play函数可以控制播放不同层级中的动画。
例如,如果你想在Animator Controller的第一个层级中播放名为“idle”的动画,可以使用如下代码:
```csharp
animator.Play("Base Layer.idle");
如果你想在第二个层级中播放名为“walk”的动画,并且归一化时间为0.5,可以使用如下代码:
```csharp
animator.Play("Layer2.walk", -1, 0.5f);
需要注意的是,Animator.Play函数不会替换当前正在播放的动画,而是会在指定的层级上进行混合和覆盖。
KandyDev:
unity-bug:Your platform doesn‘t support linear rendering with OpenGL ES, switch to OpenGL core graph
jizhu0821:
VsCode Error:can‘t find java! Please install JAVA 1.8 or above and set JAVA_HOME environment variabl
csdn_HZW: