记录:Unity脚本的编写5.0

目录

大型连续剧之在untiy中(或者别的什么活动)

前言

之前在场景中添加了背景音乐,而在我们的日常的体验中,可以发现游戏或者场景中有很多有趣的动画效果,今天就给我们的场景添加一个动画效果,并通过脚本对其进行一定的控制吧

创建动画

先创建一个文件夹用来装动画效果

Unity Animation、Animator

在使用和编写关于动画的内容之前需要先了解一下unity关于动画的组件,那就是Animation和Animator

在unity的老版本中我们只有Animation组件,在4.6版本以后则增添了Animator组件,如果只是控制一个动画的播放我们则用Animaton组件,如果是很多动画之间相互转换则使用Animator组件,它们两者的区别就是Animator有一个动画控制器(俗称动画状态机),使用它来进行动画切换是非常方便的,但缺点是占用内存比Animaton组件大

常用类

Animator:动画控制器,控制Mecanim动画系统的接口,用来管理多个动画;

Animation:用于播放动画,老版中单独的一个Animation也可以完成动画的播放和切换,不过状态切换之类的需要程序猿代码控制。在新版中,状态管理部分交给了Animator;

AnimationClip:动画剪辑片段,储存基于关键帧的动画,是用于Animation来播放动画;

AnimationState:动画状态,用来改变单一动画的播放速度、权重、时间、层级、播放Mode,以及混合模式;

AnimationEvent:动画事件,用于某种条件下触发自定义函数;

StateMachineBehaviour: 动画状态机管理器拓展类,脚本继承了该类之后,绑定到Animator上某State上面。当状态发生变化,可以重载响应函数。类似 触发器的响应函数;

关于两者的区别

相对于老版Animation,新版的Animator加入了动画状态机

相对于老版Animation,新版的Animator加入了骨骼Avatar(不过现在用不到就是了

详细了解可以阅读这篇文章
linkhttps://www.cnblogs.com/01zxs/p/9965115.html

Animator

回归正题,由于unity自己的动画控制非常逆天,总之就是很难用,并且旧版还已经不太常用,在这里就不再赘述,想要了解的可以看看这篇文章或者视频什么的
linkhttp://t.csdnimg.cn/erxaa

所以在这里就说说Animator

先找一些动画效果,一个小人做一些动作

将小人拖到场景中(随便拖一个就行)

于是就出现了那行蓝字,就是拖过来的对象了

(熟悉的方块和球回来啦)

点击对象,进行操作

添加Animator组件对动画进行控制

打开动画器

将动画中的蓝色三角形图标拖到动画器中,这里随便拖了几个

在动画器的动作中创建过渡进行动画的衔接

同理,继续操作达成图中的效果

在参数中创建tigger

试运行一下,点击动画器

看看场景中

发现小人进行了动画的演示

编写脚本

使用脚本控制动画的播放

c# 复制代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;



public class NewBehaviourScript1 : MonoBehaviour
{
    Animator am;
    // Start is called before the first frame update
    void Start()
    {
        am = GetComponent<Animator>();

        StartCoroutine(learnConroitine());//开启协程
        //StopCoroutine();
        //StopAllCoroutines();
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            am.SetTrigger("zcc");//设置触发   //这是我的那个动画的名字
            //yield return new WaitForSeconds(5);
            //am.SetBool();//设置bool值
            // am.SetFloat();//设置浮点数
            //am.SetInteger();//设置整数值
        }
        //else
        //{
        //    yield return null;
        //}
    }

    //Unity中协程的使用,采用的是yield return
    IEnumerator learnConroitine()
    {
        yield return new WaitForSeconds(5); 
       yield return null;           //yield用于将方法切割开
    }
}

这个脚本应该可以在按键盘F的时候使动画播放

以上。

相关推荐
神罚天下ET8 小时前
c# ACME client (补充)
开发语言·c#
qq_3707730910 小时前
Unity游戏xLua逆向实战:从SO版本识别到Lua脚本热替换全链路
游戏·unity·lua
mxwin12 小时前
Unity Shader 水面 Shader 教程 从 Gerstner 波浪到屏幕折射、焦散、泡沫的完整实现
unity·游戏引擎
噗噗夹的TA之旅13 小时前
Shader 学习 21:自定义 Render Feature
学习·游戏·unity·c#·游戏引擎·图形渲染
脚踏实地皮皮晨14 小时前
003006001_WrapPanel控件
开发语言·c#·.net·wpf·visual studio
霍霍的袁15 小时前
【C++】模板从入门到进阶(函数模板 + 类模板 + 特化 + 分离编译)
开发语言·c++·visual studio
脚踏实地皮皮晨15 小时前
003005002_WPF StackPanel 基类官方类定义逐行深度解析
开发语言·windows·算法·c#·wpf·visual studio
用户2986985301415 小时前
Excel 转 PDF 免费在线工具,格式完美保留
人工智能·c#·excel
库拉库拉里15 小时前
深入理解 C# 异步编程:同步、Task.Wait () 与 await 的本质区别及实践指南
开发语言·c#
霍霍的袁16 小时前
【C++】string类 从 入门使用 到 底层深浅拷贝模拟实现
开发语言·c++·visual studio