uniSWF能把Flash的素材像用AS3编程类似,只不过环境要在C#或者JS中编程。要是想创建一个类似Menu菜单或者像导航一样的菜单,在Unity中首先要选择摄像机,给摄像机添加MovieClipOverlayCameraBehaviour:
因为之后 MovieClipOverlayCameraBehaviour.instance中才包含stage对象的实例,然后需要选择相机的类型:
不然程序就会报错了。
然后我们就可以在程序中编写了,这个程序需要拖放的对象当然也是相机对象,要切记!动态载入和直接给Flash材质有区别需要找的对象放在swf路径的后面:
MovieClip minimap = new MovieClip("libufan/swf/UI2.swf:MCArea");
要想获得对象的子对象,可以采用getChildByName来获取:
playerArea = minimap.getChildByName<MovieClip>("roundArea");
btn.getChildByName<TextField>("txt")
当然要是想添加点击事件的话就和AS3中一样了,可以直接添加MouseEvent。下面是所有的程序,以备时间长了回来看看:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using pumpkin.display;
using pumpkin.events;
using pumpkin.tweener;
using pumpkin.text;
public class Test1 : MonoBehaviour {
private Stage stage;
private MovieClip playerArea;
private MovieClip btnContainer;
private Dictionary<string,Handler> menus;
public float scaleRatio = 0.5f;
public float angle = 0f;
private delegate void Handler();
void Start () {
if(!MovieClipOverlayCameraBehaviour.instance)return;
stage = MovieClipOverlayCameraBehaviour.instance.stage;
MovieClip minimap = new MovieClip("libufan/swf/UI2.swf:MCArea");
playerArea = minimap.getChildByName<MovieClip>("roundArea");
minimap.scaleX = minimap.scaleY = scaleRatio;
minimap.x = stage.stageWidth-minimap.width/2*scaleRatio-20f;
minimap.y = minimap.height/2*scaleRatio+20f;
stage.addChild(minimap);
BuildMenu();
}
void Update () {
angle += Time.deltaTime*12f;
playerArea.rotation = angle;
}
void MenuData()
{
menus = new Dictionary<string, Handler>();
menus.Add("New Game", HandlerStart);
menus.Add("Continue", HandlerStart);
menus.Add("Options", HandlerStart);
menus.Add("Exit",HandlerStart);
}
void BuildMenu()
{
MenuData();
btnContainer = new MovieClip();
stage.addChild(btnContainer);
int i=0;
foreach(KeyValuePair<string,Handler> keyvalue in menus)
{
MovieClip btn = new MovieClip("libufan/swf/UI2.swf:MCTxt");
btn.gotoAndStop(1);
btn.looping = false;
btn.mouseChildrenEnabled = false;
btn.y = i*(btn.height+10f);
btn.name = keyvalue.Key;
//btn.getChildByName<TextField>("txt").text = btn.name;
stage.addChild(btn);
i++;
}
btnContainer.x = stage.stageWidth*0.5f;
btnContainer.y = (stage.stageHeight - btnContainer.height)*0.5f;
}
void HandlerStart()
{
Debug.Log("start");
}
}
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using pumpkin.display;
using pumpkin.events;
using pumpkin.tweener;
using pumpkin.text;
public class L2 : MonoBehaviour {
private Stage stage;
private MovieClip minimap;
private MovieClip background;
private MovieClip playerArea;
private MovieClip btnContainer;
private Dictionary<string,Handler> menus;
public float scaleRatio=0.5f;
public float angle=0f;
private delegate void Handler();
void Start () {
if(!MovieClipOverlayCameraBehaviour.instance)return;
stage=MovieClipOverlayCameraBehaviour.instance.stage;
background=new MovieClip("learnUniSwf/1/hud2.swf:Background");
[color=#008ef1]//背景全屏制作方法[/color]
background.x=-2;
background.y=-2;
background.scaleX=(stage.stageWidth+10)/background.width;
background.scaleY=(stage.stageHeight+10)/background.height;
stage.addChild(background);
minimap=new MovieClip("learnUniSwf/1/hud2.swf:Minimap");
playerArea=minimap.getChildByName<MovieClip>("player");
minimap.scaleX=minimap.scaleY=scaleRatio;
minimap.x=stage.stageWidth-minimap.width/2*scaleRatio-20f;
minimap.y=minimap.height/2*scaleRatio+20f;
stage.addChild(minimap);
BuildButtons();
}
void Update () {
angle+=Time.deltaTime*12f;
//动画,模拟minimap 扫描
playerArea.rotation=angle;
}
void MenuData(){
menus=new Dictionary<string, Handler>();
menus.Add("New Game",HandlerStart);
menus.Add("Continue",HandlerContinue);
menus.Add("Options",HandlerOptions);
menus.Add("Exit",HandlerExit);
}
void BuildButtons(){
MenuData();
btnContainer=new MovieClip("learnUniSwf/1/hud2.swf:SimpleContainer");
stage.addChild(btnContainer);
int i=0;
foreach(KeyValuePair<string,Handler> keyvalue in menus){
MovieClip btn=new MovieClip("learnUniSwf/1/hud2.swf:SimpleButton");
btn.gotoAndStop(1);
btn.looping=false
//按钮子元素对Mouse 不触发事件,很关键,不然下文evt.target将指向Btn内的某元素
btn.mouseChildrenEnabled=false;
btn.y=i*(btn.height+10f);
btn.name=keyvalue.Key;
btn.getChildByName<TextField>("txt").text=btn.name;
btnContainer.addChild(btn);
i++;
}
btnContainer.x=stage.stageWidth/2;
btnContainer.y=(stage.stageHeight-btnContainer.height)/2;
//对按钮父容器进行监听,通过事件的target引用找到按钮
btnContainer.addEventListener(MouseEvent.CLICK,ClickHandler);
btnContainer.addEventListener(MouseEvent.MOUSE_ENTER,OnEnter);
btnContainer.addEventListener(MouseEvent.MOUSE_LEAVE,OnLeave);
}
void HandlerStart(){
Debug.Log("handler start....");
}
void HandlerContinue(){
Debug.Log("handler continue....");
}
void HandlerOptions(){
Debug.Log("handler options....");
}
void HandlerExit(){
Debug.Log("handler exit....");
}
void ClickHandler(CEvent evt){
Handler h=menus[(evt.target as MovieClip).name];
if(h!=null){
h();
}
}
void OnEnter(CEvent evt){
(evt.target as MovieClip).gotoAndPlay(1);
}
void OnLeave(CEvent evt){
//(evt.target as MovieClip).gotoAndStop(1);
}
}
分享到:
相关推荐
Unity3D的uniSWF插件动态加载SWF UI资源1
Unity-UI-Extensions,总有一款效果是你想要的!
Unity-URP-UI-Blur(2022.2) 效果预览+食用步骤:https://blog.csdn.net/qq_26318597/article/details/130600540
插件简介: 该插件是一款很容易地将adobe、flash、应用于u3d用户界面的解决方案。通过flash简单的发布资源。一个熟悉和有力的api模型实时地通过菜单创建任何你想要的游戏。...Unity3D插件-- uniSWF 最新版 1.0.5 分卷2
使用这款插件可以在Unity中快速实现: 1. 单文件选中 2. 多文件选中 3. 文件夹选中 等Windows资源选取UI功能。 具体的Demo和使用方法见解压后的Readme文件。 解压后也有Demo代码样例。
插件简介: 该插件是一款很容易地将adobe、flash、应用于u3d用户界面的解决方案。通过flash简单的发布资源。一个熟悉和有力的api模型实时地通过菜单创建任何你想要的游戏。...Unity3D插件-- uniSWF 最新版 1.0.5 分卷2
完整版的uniSWF开发插件,适用于unity3D,支持flash的swf文件导入unity。
Unity日志输出插件,在手机和pc上均有用,能很清晰的看到日志打印,非常好用。 使用这个工具,你可以很容易地在游戏内部检查你的编辑器控制台日志!在移动端同样有效! 支持unity2017.4.29 or 更高版本
有了它,Unity可以集成Flash了。 脚本插件简介: 该插件是一款很容易地将adobe、flash、应用于u3d用户界面的解决方案。通过flash简单的发布资源。一个熟悉和有力的api模型实时地通过菜单创建任何你想要的游戏。 ...
vuforia-unity-6-0-112.unitypackage
vuforia-samples-advanced-android-ios-unity-4-2-3.zip官网下载太慢了,放在网盘方便大家下载
Unity和C#-游戏开发-3d农场模拟+源代码工程
unity3d增强现实最新版 vuforia-unity-android-ios-3-0-9.unitypackage开发包插件
unity3D大作业素材,包括大量UI界面包:Cartoon Game GUI 3 1.0.
Unity破碎插件-unity-fracture B站视频:https://www.bilibili.com/video/BV1fM4y1c7Ck?spm_id_from=333.999.0.0
Unity 免ADB真机日志查看插件分享Unity Logs Viewe。详情参看https://blog.csdn.net/wuming2016/article/details/90609787
unity4.3.4f1-----unity3d RPG游戏《外星人》完整源码下载.zip unity4.3.4f1-----unity3d RPG游戏《外星人》完整源码下载.zip
unity spain 3.8 2021-11-10
spine骨骼动画导入unity插件