加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:06:21 所属栏目:百科 来源:网络整理
导读:使用uniSWF时,我们经常会这样使用 MovieClip minimap = new MovieClip("libufan/swf/UI2.swf:MCArea"); 来创建UI。但是在uniSWF可以让SWF的素材不仅仅活跃于二维的平面上,还可以通过给空的GameObject或者其他对象来添加MovieClipBehaviour使SWF可以再三

使用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(),会发现动画总是会卡一下,然后再继续播放。如果你和我一样想到了这样的效果,那就该让你头疼了。其实我也头疼的。不过在这里我还是公布一下自己的一个想法,虽然没有直接从根源解决,但是却解决了卡帧的情况,让动画可以很顺利的播放了。下面就是源码了:

[csharp] view plain copy print ?
  1. using?UnityEngine;??
  2. using?System.Collections;??
  3. ???
  4. public?class?ObjectAwaysLookCamera?:?MonoBehaviour?{??
  5. ???
  6. ????private?Vector3?cameraPostion;??
  7. ????private?MovieClipBehaviour?ComMovieClipBehaviour;??
  8. ????void?Start?()?{??
  9. ????????ComMovieClipBehaviour?=?gameObject.GetComponent<MovieClipBehaviour>();??
  10. ????}??
  11. ???
  12. ????void?Update?()?{??
  13. ????????cameraPostion?=?Camera.main.transform.position;??
  14. ????????transform.LookAt(cameraPostion);??
  15. ????}??
  16. ???
  17. ????void?OnDisable()??
  18. ????{??
  19. ????????renderer.enabled?=?false;??
  20. ????????ComMovieClipBehaviour.drawScale?=?new?Vector2(0.00f,?0.00f);??
  21. ????}??
  22. ???
  23. ????void?OnEnable()??
  24. ????{??
  25. ????????ComMovieClipBehaviour?=?gameObject.GetComponent<MovieClipBehaviour>();??
  26. ????????if?(ComMovieClipBehaviour?!=?null)??
  27. ????????{??
  28. ????????????if?(ComMovieClipBehaviour.movieClip?!=?null)??
  29. ????????????{??
  30. ????????????????ComMovieClipBehaviour.movieClip.gotoAndStop(1);??
  31. ????????????????StartCoroutine(WaitSeconds(0.1f));??
  32. ????????????}??
  33. ????????}??
  34. ????}??
  35. ???
  36. ????IEnumerator?WaitSeconds(float?time)??
  37. ????{??
  38. ????????ComMovieClipBehaviour.movieClip.play();??
  39. ????????yield?return?new?WaitForSeconds(time);??
  40. ????????renderer.enabled?=?true;??
  41. ????????ComMovieClipBehaviour.drawScale?=?new?Vector2(0.04f,?0.04f);??
  42. ????}??
  43. }??

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

转载:http://www.voidcn.com/article/p-muxwvecw-mv.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读