uniSWF能把Flash的素材像用AS3编程类似,只不过环境要在C#或者JS中编程。要是想创建一个类似Menu菜单或者像导航一样的菜单,在Unity中首先要选择摄像机,给摄像机添加MovieClipOverlayCameraBehaviour:
Unity3D的uniSWF插件动态加载SWF UI资源
因为之后 MovieClipOverlayCameraBehaviour.instance中才包含stage对象的实例,然后需要选择相机的类型:
Unity3D的uniSWF插件动态加载SWF UI资源
不然程序就会报错了。
然后我们就可以在程序中编写了,这个程序需要拖放的对象当然也是相机对象,要切记!动态载入和直接给Flash材质有区别需要找的对象放在swf路径的后面:
|
1 |
MovieClip minimap = new MovieClip("libufan/swf/UI2.swf:MCArea"); |
要想获得对象的子对象,可以采用getChildByName来获取:
|
1 |
playerArea = minimap.getChildByName<MovieClip>("roundArea"); |
2 |
btn.getChildByName<TextField>("txt") |
当然要是想添加点击事件的话就和AS3中一样了,可以直接添加MouseEvent。下面是所有的程序,以备时间长了回来看看:
|
01 |
using UnityEngine; |
||
02 |
using System.Collections; |
||
03 |
using System.Collections.Generic; |
||
04 |
using pumpkin.display; |
||
05 |
using pumpkin.events; |
||
06 |
using pumpkin.tweener; |
||
07 |
using pumpkin.text; |
||
08 |
|
||
09 |
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< |