unity基础开发----Unity3DuniSWF MovieClipBehaviour的使用

使用uniSWF时,我们经常会这样使用

MovieClip minimap = new MovieClip("libufan/swf/UI2.swf:MCArea");

来创建UI。但是在uniSWF可以让SWF的素材不仅仅活跃于二维的平面上,还可以通过给空的GameObject或者其他对象来添加MovieClipBehaviour使SWF可以再三维的空间中呈现,这样我们就可以轻松的实现动画。


但是性质还是2D的,不过我们可以选择用程序控制,让这个对象始终对着Camera。这样的我们对象就会变得非常有质感了。

如果大家想做这样的一个效果,就是开始的时候让这个动画在3D空间中播放,然后某一段时间后想让动画停在第一帧,然后重新播放Animation,就会发现有个很奇怪的问题。虽然MovieClipBehaviour里面有movieClip这个属性,但是即使我们不论怎么gotoAndStop(1),然后play(),会发现动画总是会卡一下,然后再继续播放。如果你和我一样想到了这样的效果,那就该让你头疼了。其实我也头疼的。不过在这里我还是公布一下自己的一个想法,虽然没有直接从根源解决,但是却解决了卡帧的情况,让动画可以很顺利的播放了。下面就是源码了:

using UnityEngine;
using System.Collections;
 
public class ObjectAwaysLookCamera : MonoBehaviour {
 
    private Vector3 cameraPostion;
    private MovieClipBehaviour ComMovieClipBehaviour;
	void Start () {
        ComMovieClipBehaviour = gameObject.GetComponent<MovieClipBehaviour>();
	}
 
	void Update () {
        cameraPostion = Camera.main.transform.position;
        transform.LookAt(cameraPostion);
	}
 
    void OnDisable()
    {
        renderer.enabled = false;
        ComMovieClipBehaviour.drawScale = new Vector2(0.00f, 0.00f);
    }
 
    void OnEnable()
    {
        ComMovieClipBehaviour = gameObject.GetComponent<MovieClipBehaviour>();
        if (ComMovieClipBehaviour != null)
        {
            if (ComMovieClipBehaviour.movieClip != null)
            {
                ComMovieClipBehaviour.movieClip.gotoAndStop(1);
                StartCoroutine(WaitSeconds(0.1f));
            }
        }
    }
 
    IEnumerator WaitSeconds(float time)
    {
        ComMovieClipBehaviour.movieClip.play();
        yield return new WaitForSeconds(time);
        renderer.enabled = true;
        ComMovieClipBehaviour.drawScale = new Vector2(0.04f, 0.04f);
    }
}

以上的类可以直接创建一个C#文件,然后className要与我创建的一样哦(如果想换掉其实也是可以的,呵呵)!然后把这个类其实拖放到添加了MovieClipBehaviour的实例上面,在其他的类控制这个实例的gameObject.active就可以看到 动画都是重新播放的,而且不会出现卡帧的现象了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值