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

unity基础开发----Unity3D的uniSWF插件动态加载SWF UI资源

发布时间:2020-12-15 18:06:20 所属栏目:百科 来源:网络整理
导读:uniSWF能把Flash的素材像用AS3编程类似,只不过环境要在C#或者JS中编程。要是想创建一个类似Menu菜单或者像导航一样的菜单,在Unity中首先要选择摄像机,给摄像机添加MovieClipOverlayCameraBehaviour: 因为之后 MovieClipOverlayCameraBehaviour.instance

uniSWF能把Flash的素材像用AS3编程类似,只不过环境要在C#或者JS中编程。要是想创建一个类似Menu菜单或者像导航一样的菜单,在Unity中首先要选择摄像机,给摄像机添加MovieClipOverlayCameraBehaviour:


因为之后 MovieClipOverlayCameraBehaviour.instance中才包含stage对象的实例,然后需要选择相机的类型:


不然程序就会报错了。
然后我们就可以在程序中编写了,这个程序需要拖放的对象当然也是相机对象,要切记!动态载入和直接给Flash材质有区别需要找的对象放在swf路径的后面:

[csharp] view plain copy print ?
  1. MovieClip?minimap?=?new?MovieClip("libufan/swf/UI2.swf:MCArea");??


要想获得对象的子对象,可以采用getChildByName来获取:

[csharp] view plain copy print ?
  1. playerArea?=?minimap.getChildByName<MovieClip>("roundArea");??
  2. btn.getChildByName<TextField>("txt")??


当然要是想添加点击事件的话就和AS3中一样了,可以直接添加MouseEvent。下面是所有的程序,以备时间长了回来看看:

[csharp] view plain copy print ?
  1. using?UnityEngine;??
  2. using?System.Collections;??
  3. using?System.Collections.Generic;??
  4. using?pumpkin.display;??
  5. using?pumpkin.events;??
  6. using?pumpkin.tweener;??
  7. using?pumpkin.text;??
  8. ???
  9. public?class?Test1?:?MonoBehaviour?{??
  10. ????private?Stage?stage;??
  11. ????private?MovieClip?playerArea;??
  12. ????private?MovieClip?btnContainer;??
  13. ????private?Dictionary<string,Handler>?menus;??
  14. ???
  15. ????public?float?scaleRatio?=?0.5f;??
  16. ????public?float?angle?=?0f;??
  17. ????private?delegate?void?Handler();??
  18. ????void?Start?()?{??
  19. ????????if(!MovieClipOverlayCameraBehaviour.instance)return;??
  20. ????????stage?=?MovieClipOverlayCameraBehaviour.instance.stage;??
  21. ????????MovieClip?minimap?=?new?MovieClip("libufan/swf/UI2.swf:MCArea");??
  22. ????????playerArea?=?minimap.getChildByName<MovieClip>("roundArea");??
  23. ????????minimap.scaleX?=?minimap.scaleY?=?scaleRatio;??
  24. ????????minimap.x?=?stage.stageWidth-minimap.width/2*scaleRatio-20f;??
  25. ????????minimap.y?=?minimap.height/2*scaleRatio+20f;??
  26. ????????stage.addChild(minimap);??
  27. ???
  28. ????????BuildMenu();??
  29. ????}??
  30. ???
  31. ????void?Update?()?{??
  32. ????????angle?+=?Time.deltaTime*12f;??
  33. ????????playerArea.rotation?=?angle;??
  34. ????}??
  35. ???
  36. ????void?MenuData()??
  37. ????{??
  38. ????????menus?=?new?Dictionary<string,?Handler>();??
  39. ????????menus.Add("New?Game",?HandlerStart);??
  40. ????????menus.Add("Continue",?HandlerStart);??
  41. ????????menus.Add("Options",?HandlerStart);??
  42. ????????menus.Add("Exit",HandlerStart);??
  43. ????}??
  44. ???
  45. ????void?BuildMenu()??
  46. ????{??
  47. ????????MenuData();??
  48. ???
  49. ????????btnContainer?=?new?MovieClip();??
  50. ????????stage.addChild(btnContainer);??
  51. ???
  52. ????????int?i=0;??
  53. ????????foreach(KeyValuePair<string,Handler>?keyvalue?in?menus)??
  54. ????????{??
  55. ????????????MovieClip?btn?=?new?MovieClip("libufan/swf/UI2.swf:MCTxt");??
  56. ????????????btn.gotoAndStop(1);??
  57. ????????????btn.looping?=?false;??
  58. ????????????btn.mouseChildrenEnabled?=?false;??
  59. ????????????btn.y?=?i*(btn.height+10f);??
  60. ????????????btn.name?=?keyvalue.Key;??
  61. ????????????//btn.getChildByName<TextField>("txt").text?=?btn.name; ??
  62. ????????????stage.addChild(btn);??
  63. ????????????i++;??
  64. ????????}??
  65. ???
  66. ????????btnContainer.x?=?stage.stageWidth*0.5f;??
  67. ????????btnContainer.y?=?(stage.stageHeight?-?btnContainer.height)*0.5f;??
  68. ????}??
  69. ???
  70. ????void?HandlerStart()??
  71. ????{??
  72. ????????Debug.Log("start");??
  73. ????}??
  74. }??


?

[csharp] view plain copy print ?
  1. using?UnityEngine;??
  2. using?System.Collections;??
  3. using?System.Collections.Generic;??
  4. using?pumpkin.display;??
  5. using?pumpkin.events;??
  6. using?pumpkin.tweener;??
  7. using?pumpkin.text;??
  8. ???
  9. public?class?L2?:?MonoBehaviour?{??
  10. ????private?Stage?stage;??
  11. ????private?MovieClip?minimap;??
  12. ????private?MovieClip?background;??
  13. ????private?MovieClip?playerArea;??
  14. ????private?MovieClip?btnContainer;??
  15. ????private?Dictionary<string,Handler>?menus;??
  16. ???
  17. ????public?float?scaleRatio=0.5f;??
  18. ????public?float?angle=0f;??
  19. ???
  20. ????private?delegate?void?Handler();??
  21. ???
  22. ????void?Start?()?{??
  23. ????????if(!MovieClipOverlayCameraBehaviour.instance)return;??
  24. ????????stage=MovieClipOverlayCameraBehaviour.instance.stage;??
  25. ???
  26. ????????background=new?MovieClip("learnUniSwf/1/hud2.swf:Background");??
  27. ????????[color=#008ef1]//背景全屏制作方法[/color] ??
  28. ????????background.x=-2;??
  29. ????????background.y=-2;??
  30. ????????background.scaleX=(stage.stageWidth+10)/background.width;??
  31. ????????background.scaleY=(stage.stageHeight+10)/background.height;??
  32. ????????stage.addChild(background);??
  33. ???
  34. ????????minimap=new?MovieClip("learnUniSwf/1/hud2.swf:Minimap");??
  35. ????????playerArea=minimap.getChildByName<MovieClip>("player");??
  36. ????????minimap.scaleX=minimap.scaleY=scaleRatio;??
  37. ????????minimap.x=stage.stageWidth-minimap.width/2*scaleRatio-20f;??
  38. ????????minimap.y=minimap.height/2*scaleRatio+20f;??
  39. ????????stage.addChild(minimap);??
  40. ???
  41. ????????BuildButtons();??
  42. ????}??
  43. ???
  44. ????void?Update?()?{??
  45. ????????angle+=Time.deltaTime*12f;??
  46. //动画,模拟minimap?扫描 ??
  47. ????????playerArea.rotation=angle;??
  48. ????}??
  49. ???
  50. ????void?MenuData(){??
  51. ????????menus=new?Dictionary<string,?Handler>();??
  52. ????????menus.Add("New?Game",HandlerStart);??
  53. ????????menus.Add("Continue",HandlerContinue);??
  54. ????????menus.Add("Options",HandlerOptions);??
  55. ????????menus.Add("Exit",HandlerExit);??
  56. ????}??
  57. ???
  58. ????void?BuildButtons(){??
  59. ????????MenuData();??
  60. ???
  61. ????????btnContainer=new?MovieClip("learnUniSwf/1/hud2.swf:SimpleContainer");??
  62. ????????stage.addChild(btnContainer);??
  63. ???
  64. ????????int?i=0;??
  65. ????????foreach(KeyValuePair<string,Handler>?keyvalue?in?menus){??
  66. ????????????MovieClip?btn=new?MovieClip("learnUniSwf/1/hud2.swf:SimpleButton");??
  67. ????????????btn.gotoAndStop(1);??
  68. ????????????btn.looping=false??
  69. //按钮子元素对Mouse?不触发事件,很关键,不然下文evt.target将指向Btn内的某元素 ??
  70. ????????????btn.mouseChildrenEnabled=false;??
  71. ????????????btn.y=i*(btn.height+10f);??
  72. ????????????btn.name=keyvalue.Key;??
  73. ????????????btn.getChildByName<TextField>("txt").text=btn.name;??
  74. ????????????btnContainer.addChild(btn);??
  75. ????????????i++;??
  76. ????????}??
  77. ???
  78. ????????btnContainer.x=stage.stageWidth/2;??
  79. ????????btnContainer.y=(stage.stageHeight-btnContainer.height)/2;??????
  80. //对按钮父容器进行监听,通过事件的target引用找到按钮 ??
  81. ????????btnContainer.addEventListener(MouseEvent.CLICK,ClickHandler);??
  82. ????????btnContainer.addEventListener(MouseEvent.MOUSE_ENTER,OnEnter);??
  83. ????????btnContainer.addEventListener(MouseEvent.MOUSE_LEAVE,OnLeave);??
  84. ????}??
  85. ???
  86. ????void?HandlerStart(){??
  87. ????????Debug.Log("handler?start....");??
  88. ????}??
  89. ???
  90. ????void?HandlerContinue(){??
  91. ????????Debug.Log("handler?continue....");??
  92. ????}??
  93. ???
  94. ????void?HandlerOptions(){??
  95. ????????Debug.Log("handler?options....");??
  96. ????}??
  97. ???
  98. ????void?HandlerExit(){??
  99. ????????Debug.Log("handler?exit....");??????
  100. ????}??
  101. ???
  102. ????void?ClickHandler(CEvent?evt){??
  103. ????????Handler?h=menus[(evt.target?as?MovieClip).name];??
  104. ????????if(h!=null){??
  105. ????????????h();??
  106. ????????}??
  107. ????}??
  108. ???
  109. ????void?OnEnter(CEvent?evt){??
  110. ????????(evt.target?as?MovieClip).gotoAndPlay(1);??????
  111. ????}??
  112. ???
  113. ????void?OnLeave(CEvent?evt){??
  114. ????????//(evt.target?as?MovieClip).gotoAndStop(1); ??
  115. ????}??
  116. ???
  117. }??
  118. 转载:http://www.voidcn.com/article/p-yvqzdjzp-sv.html

(编辑:李大同)

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

    推荐文章
      热点阅读