- 用户指南
- 资源商店 (Asset Store)
- 资源服务器 (Asset Server)(仅限团队许可证)
- 缓存服务器(仅限团队许可证)
- 幕后场景
- 创建游戏
- 运行时实例化预设 (Prefabs)
- 变换 (Transforms)
- 物理
- 添加随机的游戏元素
- 粒子系统(Particle Systems)
- Mecanim 动画系统
- 旧动画系统
- 导航网格 (Navmesh) 和寻路 (Pathfinding)(仅限专业版 (Pro))
- Sound (音频侦听器)
- 游戏界面元素
- 多玩家联网游戏
- iOS 开发入门
- Android 开发入门
- Blackberry 10 开发入门
- Metro:入门指南
- 本地客户端开发入门
- FAQ
- Advanced
- Vector Cookbook
- 资源包(仅限专业版)
- Graphics Features
- 资源数据库 (AssetDatabase)
- 构建播放器管道
- 分析器(仅限专业版)
- 光照贴图快速入门
- 遮挡剔除(仅限专业版)
- 相机使用技巧
- 运行时加载资源
- 通过脚本修改源资源
- 用程序生成网格几何体
- 富文本
- 在 Unity 工程 (Project) 中使用 Mono DLL
- 事件函数的执行顺序
- 移动优化实用指南
- Unity XCode 工程结构
- 优化图形性能
- 减少文件大小
- 理解自动内存管理
- 平台依赖编译
- 泛型函数
- 调试
- 插件(专业版/移动版特有功能)
- 文本场景文件格式(仅限专业版)
- 流媒体资源
- 启动时运行编辑器脚本代码
- 网络模拟
- VisualStudio C 集成
- 分析
- 检查更新
- 安装多版本 Unity
- 故障排除
- Unity 中的阴影
- Unity 中的 IME
- 对集成显卡进行优化
- 网络播放器 (Web Player) 部署
- 使用网络播放器中的信任链系统
Flash:在较大的 Flash 工程中嵌入 Unity 生成的 Flash 内容
embeddingapi.swc
如需在较大的 Flash 工程中嵌入 Unity 生成的 Flash 内容,请使用 embeddingapi.swc 执行此操作。此 SWC 可提供 加载功能并与 Unity 发布的 Flash 内容进行交换。在 embeddingapi.swc 文件中,您将看见两个类和两个界面。以下介绍了上述各项及其可用的功能。
构建了 Unity Flash 工程后,您构建 SWF 的同一位置将显示 embeddingapi.swc 文件副本。可像使用其他 SWC 一样在 Flash 工程中使用此 SWC。有关 SWC 简介及其用法的更多详细信息,请参阅 Adobe 文档。
Stage3D 的局限性
在其他 Flash 工程中嵌入 Unity Flash 内容时,了解 Flash 显示模式会有所帮助。所有 Stage3D 内容在 Flash Stage 之后显示。这表示,添加至 Stage 的任何 Flash 显示列表内容将始终在 3D 内容之前进行渲染。有关更多信息,请参阅 Adobe 的 “Stage3D 工作原理”页面。
IUnityContent
IUnityContent 由 Unity 构建的 Flash 内容实现。此界面介绍与 Untiy 内容交换信息的方式或修改 Untiy 内容的方式。
类函数:
getTextureFromNativeId(id :int) :TextureBase; | 启用纹理检索。有关使用此函数的完整工程示例,请参阅论坛。 |
sendMessage(objectPath :String, methodName :String, value :Object = null) :Boolean; | sendMessage 函数可用于调用 Unity 内容中某对象的类函数。 |
setContentHost(contentHost :IUnityContentHost) :void; | 设置 Unity 内容的宿主(必须实现 IUnityContentHost)。然后,宿主可监听加载/启动 Unity 内容的时间。 |
setSize(width :int, height :int) :void; | 修改 Unity 内容的大小 |
setPosition(x:int = 0, y:int = 0):void; | 允许您重新放置内容宿主中的 Unity 内容。 |
startFrameLoop() :void; | 启动 Unity 内容。 |
stopFrameLoop() :void; | 停止运行 Unity 内容。 |
forceUnload():void; | 卸载 Unity flash 内容。 |
IUnityContentHost
这必须由托管 Unity 内容的类来实现。
类函数:
unityInitComplete() :void; | 初始化 Unity 引擎并加载第一个级别后调用此函数。 |
unityInitStart() :void; | 内容已加载且 Unity 引擎初始化开始后调用此函数。 |
UnityContentLoader
UnityContentLoader 类可用于加载 Unity 发布的 Flash 内容并扩展 AS3 Loader 类。和标准 AS3 Loader 实例一样,您可以将事件监听程序添加至其 contentLoaderInfo,以了解加载进程和完成时间。
构造函数:
UnityContentLoader(contentURL :String, contentHost :IUnityContentHost = null, params :UnityLoaderParams = null, autoLoad :Boolean = true) :void;
创建 UnityContentLoader 实例可让您添加事件监听程序,并使用该程序加载 Unity 内容。
- contentURL:加载 Unity 发布的 SWF 的URL。
- contentHost:内容的宿主。这应该是您实现 IUnityContentHost 的自有. ActionScript 类。
- params:如需重写默认的加载细节,则可提供 一个 UnityLoaderParams 实例。
- autoLoad:如果设为 true,则将在创建 UnityContentLoader 后立即开始加载(无需单独调用 loadUnity())。如需使用事件跟踪加载进程,则应将其设为 false。添加了相应的事件监听程序后,可手动调用 loadUnity()。
可用属性:
unityContent :IUnityContent; | 内容加载完成后,可访问 Unity 内容,以运行 sendMessage() 等函数。 |
类函数:
loadUnity() :void; | 指示 UnityContentLoader 从构造函数的 URL 中加载 Unity 内容。 |
forceUnload() :void; | 卸载宿主中的 unity 内容。 |
unload() :void; | 重写 AS3 Loader 类的默认 unload() 类函数,并调用 forceUnload。 |
unloadAndStop(gc:Boolean = true):void | 卸载 unity 内容,然后调用 unloadAndStop(gc) 的默认加载程序实现。 |
UnityLoaderParams
构造函数:
创建 UnityContentLoader 以提供 额外加载程序配置时,UnityContentLoader 将收到参数。
function UnityLoaderParams(scaleToStage :Boolean = false, width :int = 640, height :int = 480, usePreloader :Boolean = false, autoInit :Boolean = true, catchGlobalErrors :Boolean = true) :void;
- scaleToStage:Unity 内容是否仍保持为固定大小,还是在调整父 Flash 窗口大小时也进行缩放。
- width:Unity 内容的宽度。
- height:Unity 内容的高度。
- usePreloader:是否显示 Unity 预加载程序。.
- autoInit:目前不适用。
- catchGlobalErrors:是否捕获错误,并在 swf 左上角的红色方框内显示错误。
示例
以下示例介绍如何将 Unity 发布的 Flash 内容加载至宿主 SWF。它介绍如何提供 自定义 UnityLoaderParams 以及如何跟踪文件加载进程。将 Unity 内容添加至宿主后,宿主将使用 sendMessage 函数调用 Unity 内容中的函数。
ActionScript 3
package { public class MyLoader extends Sprite implements IUnityContentHost { private var unityContentLoader:UnityContentLoader; public function MyLoader() { var params:UnityLoaderParams = new UnityLoaderParams(false,720,400,false); unityContentLoader = new UnityContentLoader("UnityContent.swf", this, params, false); unityContentLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onUnityContentLoaderProgress); unityContentLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onUnityContentLoaderComplete); unityContentLoader.loadUnity(); } private function onUnityContentLoaderProgress(event:ProgressEvent):void { //Respond to load progress } private function onUnityContentLoaderComplete(event:Event):void { addChild(unityContentLoader); unityContentLoader.unityContent.setContentHost(this); } //unityInitStart has to be implemented by whatever implements IUnityContenthost //This is called when the content is loaded and the initialization of the unity engine is started. public function unityInitStart():void { //Unity engine started } //unityInitComplete has to be implemented by whatever implements IUnityContenthost //This is called when the unity engine is done initializing and the first level is loaded. public function unityInitComplete():void { unityContentLoader.unityContent.sendMessage("Main Camera","SetResponder",{responder:this}); } ... } }
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论