unity基础开发----Unity3DuniSWF MovieClipBehaviour的使用
2013-04-08 17:24
375 查看
使用uniSWF时,我们经常会这样使用
来创建UI。但是在uniSWF可以让SWF的素材不仅仅活跃于二维的平面上,还可以通过给空的GameObject或者其他对象来添加MovieClipBehaviour使SWF可以再三维的空间中呈现,这样我们就可以轻松的实现动画。
但是性质还是2D的,不过我们可以选择用程序控制,让这个对象始终对着Camera。这样的我们对象就会变得非常有质感了。
如果大家想做这样的一个效果,就是开始的时候让这个动画在3D空间中播放,然后某一段时间后想让动画停在第一帧,然后重新播放Animation,就会发现有个很奇怪的问题。虽然MovieClipBehaviour里面有movieClip这个属性,但是即使我们不论怎么gotoAndStop(1),然后play(),会发现动画总是会卡一下,然后再继续播放。如果你和我一样想到了这样的效果,那就该让你头疼了。其实我也头疼的。不过在这里我还是公布一下自己的一个想法,虽然没有直接从根源解决,但是却解决了卡帧的情况,让动画可以很顺利的播放了。下面就是源码了:
以上的类可以直接创建一个C#文件,然后className要与我创建的一样哦(如果想换掉其实也是可以的,呵呵)!然后把这个类其实拖放到添加了MovieClipBehaviour的实例上面,在其他的类控制这个实例的gameObject.active就可以看到 动画都是重新播放的,而且不会出现卡帧的现象了。
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就可以看到 动画都是重新播放的,而且不会出现卡帧的现象了。
相关文章推荐
- 蓝鸥Unity开发基础——使用字符串学习笔记
- unity基础开发----Unity3D的uniSWF使用教程
- 蓝鸥Unity开发基础二——课时24 字典
- 零基础Unity3D游戏开发系列 第三章:Unity脚本编程(十八)代码执行顺序
- 【Unity基础知识之五】Unity3d-在Unity项目中使用Mono DLL(动态链接库)
- iOS开发学习专题-基础知识(一)NSString NSMutableString NSRange NSNotFound详细使用方式
- 使用Unity开发安卓游戏怎么进行性能优化?
- 【Cocos2dX(2.x)_Lua开发之三】★重要必看篇★在Lua中使用自定义精灵(Lua脚本与自创建类之间的访问)及Lua基础讲解
- unity基础开发----NGUI图集Atlas制作简介
- C# WinForm开发系列之DataRepeater控件的使用(显示数据的基础使用和自定义使用)
- 使用 Axis2 进行 SOA 开发,第 1 部分: 了解 Axis2 基础
- 【FFMpeg视频开发与应用基础】一、使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
- Objective-C ,ios,iphone开发基础:使用第三方库FMDB连接sqlite3 数据库,实现简单的登录
- cocos2d-js 开发基础练习代码(2)——使用事件管理器创建用户交互以及cocos精灵帧动画的js使用
- 【COCOS2DX-LUA 脚本开发之一】LUA语言基础在Cocos2dX游戏中使用Lua脚本进行游戏开发(基础篇)并介绍脚本在游戏中详细用途
- mysql 开发基础系列15 索引的设计和使用
- WebService从零到项目开发使用1—技术研究之基础篇 XML
- [Unity]使用Slua框架开发创建Unity引擎中的对象
- iOS开发UI基础—14IOS开发中Xcode的一些使用技巧
- 用Unity开发OculusRift体验演示教程(一)——搭建简单场景并使用Oculus提供的SDK包