unity3d如何与flash通信?

发布网友 发布时间:2022-04-21 19:32

我来回答

2个回答

热心网友 时间:2024-03-01 08:54

flash可以与c++交互,把flash播放封装成dll。unity3d调用dll。

热心网友 时间:2024-03-01 08:55

unityInitComplete和unityInitStart,分别表示u3d内容初始化完毕和开始初始化。
在flash中用UnityContentLoader类来加载unity3d发布的swf文件,UnityContentLoader类继承至Loader类。
//构造函数(swf文件路径,flash承载类,加载参数,是否自动加载)
UnityContentLoader (contentURL:String, contentHost:IUnityContentHost = null, params:UnityLoaderParams = null, autoLoad:Boolean = true);
//
UnityLoaderParams (scaleToStage:Boolean = false, width:int = 0, height:int = 480, usePreloader:Boolean = false, autoInit:Boolean = true, catchGlobalErrors:Boolean = true);
flash关键步骤事例:
//初始化u3d-swf加载器
var params:UnityLoaderParams = new UnityLoaderParams(false, 720, 400, false);
unityContentLoader = new UnityContentLoader("ball.swf", this, params, false);
unityContentLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onUnityContentLoaderProgress);
unityContentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onUnityContentLoaderComplete);
unityContentLoader.loadUnity();
//加载完毕后:
addChild(unityContentLoader);
unityContentLoader.unityContent.setContentHost(this);
//unityInitStart方法中可以不写东西。
//unityInitComplete方法
unityContentLoader.unityContent.sendMessage("InterFlash", "SetFlashUI", { flashUI:btn } );
...写一些交互触发事件==
--------------------------------------unity3d脚本
using UnityEngine;
using UnityEngine.Flash;
public class InterFlash : MonoBehaviour
{
public object flashUI;
private bool redo=true;
//传入mc实例化对象
void SetFlashUI(object mc)
{
#if UNITY_FLASH
ActionScript.Statement("InterFlash$flashUI$ = {0}.flashUI", mc);
#endif
}
//flash调用接口
public void SetBallRotation()
{
gameObject.SendMessage("WetRotate");
// #if UNITY_FLASH
// if(flashUI != null)
// {
//如果mc是一个自定义类的实例,这里会回调mc类的changeFun公共函数,并传出参数redo
// ActionScript.Statement("InterFlash$flashUI$['changeFun']({0})",redo);
// }
// #endif
}
}
注意:此脚本最好赋予游戏场景中的一个空对象,并且空对象的名字最好与类命一致(这里既InterFlash),flash调用时第一个参数就是该空对象的名称。有兴趣的话可以百度搜索编、程、回、忆、录之unity3d。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com