unity 3d中,Animation clip播放到第一个Animation Event事件就停了下来,为啥?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity 3d中,Animation clip播放到第一个Animation Event事件就停了下来,为啥?相关的知识,希望对你有一定的参考价值。
比如两个物体A1,A2,其中A2是A1的子物体,我在A1和A2上分别添加了Animation Clip,在A1的动画剪辑中间的某帧添加了一个Animation Event来引用函数播放A2的剪辑动画,我想要的效果是这样的播放顺序:A1剪辑动画的一部分+A2的剪辑动画+A1的剪辑动画的剩下部分。但是我点击播放后结果确实只播放到A2的剪辑动画,A1剪辑动画的剩下部分就不播放了,我想知道为什么,怎么解决?
不好意思,说的有点乱了。
就是类似这样的做法
把工程发给我
你说的不明不白的。
望采纳~
unity 播放视频 WWW下载StreamingAssets文件
1.
2.
3.
4.
5.
6.代码如下
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour
{
public MovieTexture kk;
bool stopflag = false;
AudioClip _clip;
AudioSource _source;
// Use this for initialization
void Start()
{
//var _movie=Resources.Load<MovieTexture>("movie/movie");
//设置当前对象的主纹理为电影纹理
transform.GetComponent<Renderer>().material.mainTexture = kk;
//设置电影纹理播放模式为循环
kk.loop = true;
_source = Camera.main.GetComponent<AudioSource>();
_clip = kk.audioClip;
GameObject.Find("Playbtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Play();
if(stopflag)
{
_source.Play();
}
});
GameObject.Find("Pausebtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Pause();
});
GameObject.Find("Stopbtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Stop();
stopflag = true;
});
}
// Update is called once per frame
void Update()
{
}
}
7.我希望可以动态加载音频文件,而不是拖动的
8.代码如下
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour
{
//public MovieTexture kk;
bool stopflag = false;
AudioClip _clip;
AudioSource _source;
// Use this for initialization
void Start()
{
var kk = Resources.Load<MovieTexture>("movie/movie");
//设置当前对象的主纹理为电影纹理
transform.GetComponent<Renderer>().material.mainTexture = kk;
//设置电影纹理播放模式为循环
kk.loop = true;
_source = Camera.main.GetComponent<AudioSource>();
_clip = kk.audioClip;
_source.clip = _clip;
GameObject.Find("Playbtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Play();
_source.Play();
if (stopflag)
{
stopflag = false;
_source.Play();
}
});
GameObject.Find("Pausebtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Pause();
});
GameObject.Find("Stopbtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Stop();
stopflag = true;
});
}
// Update is called once per frame
void Update()
{
}
}
9.
10.WWW加载StreamingAssets的文件
11.全部代码
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour
{
bool stopflag = false;
AudioClip _clip;
AudioSource _source;
WWW www;
private MovieTexture kk;
// Use this for initialization
void Start()
{
StartCoroutine(Down());//异步操作
GameObject.Find("Playbtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Play();
_source.Play();
if (stopflag)
{
stopflag = false;
_source.Play();
}
});
GameObject.Find("Pausebtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Pause();
});
GameObject.Find("Stopbtn").GetComponent<Button>().onClick.AddListener(() =>
{
kk.Stop();
stopflag = true;
});
}
IEnumerator Down()//异步操作
{
www = new WWW("file:///" + Application.streamingAssetsPath + "/movie.ogg");
yield return www;//等待,知道www把资源下载完,执行下一步
if (string.IsNullOrEmpty(www.error))
{
Debug.LogError("错误为NULL!");
}
if(www.error=="")
{
Debug.LogError("错误为空!");//这个没进来
}
if (www.error == null)
{
Debug.LogError("错误为null");
}
if (www.isDone)
{
Debug.LogError("down");
}
Debug.LogError(www.error);
kk = www.movie;
//设置当前对象的主纹理为电影纹理
transform.GetComponent<Renderer>().material.mainTexture = kk;
//设置电影纹理播放模式为循环
kk.loop = true;
_source = Camera.main.GetComponent<AudioSource>();
_clip = kk.audioClip;
_source.clip = _clip;
}
// Update is called once per frame
void Update()
{
}
}
以上是关于unity 3d中,Animation clip播放到第一个Animation Event事件就停了下来,为啥?的主要内容,如果未能解决你的问题,请参考以下文章
Unity之如何从fbx提取Animation clip文件
Unity 使用Animation Clip(动画片段) 对Animation Rig的Rig Weight (rig权重) 进行调整,出现无法调整的问题,及解决方法