返回介绍

Flash:构建并运行

发布于 2021-06-19 18:03:21 字数 4477 浏览 859 评论 0 收藏 0

以下是构建并运行导出至 Flash 的新工程的分步指南。

  1. 创建您的 Unity 内容。
  2. 依次选择文件 (File)->构建设置 (Build Settings) 将弹出构建设置对话框,然后添加场景。
  3. 将平台 (Platform) 更改为 Flash Player
  4. 可将目标播放器 (Target Player) 保留为默认设置。此选项允许您根据需要的功能更改目标 Flash Player(有关详细信息,请参阅 http://www.adobe.com/support/documentation/en/flashplayer/releasenotes.html)。
  5. 勾选开发构建 (Development Build)。(这样,Unity 就不会压缩最终的 SWF 文件。不压缩可加快构建进程,并且 SWF 文件无需进行解压缩即可在 Flash Player 中运行。注意,使用开发构建 (Development Build) 选项构建的空场景大小约为 16M,压缩的场景大小约为 2M。)
  6. 按构建 (Build) 按钮。

Unity 将在选定位置构建 SWF 文件。此外,Unity 将创建以下文件:

  • html 文件 – 用于查看使用 Flash 生成的内容。
  • swfobject.js 文件 – 检查 Flash Player 和浏览器集成。
  • embeddingapi.swc 文件。

要查看使用 Flash 生成的内容,请打开 html 文件。请勿直接打开 SWF 文件。

构建并运行功能将创建相同的文件,打开默认浏览器并加载生成的 html 文件。

构建中创建的 embeddingapi.swc 文件可用于在自有工程中加载 SWF。在标准 flash 工程中嵌入 Unity 内容可让您在 Flash 中制作 GUI。当然,此类 Flash 集成不能在任何其他构建目标上运行。

和其他构建目标一样,您可以指定 Player 设置。Flash 的大部分设置都可与其他平台共享。注意,内容的分辨率可在独立 (Standalone) 播放器中进行设置。

我们允许 Flash API 帮您处理纹理,再嵌入 swc 即可让您在 flash 中将网络摄像头、视频、矢量图形用作纹理。


构建过程

Unity Flash Publisher 尝试将 C#/UnityScript 中的脚本转换为 ActionScript。此过程中可能出现两种转换错误:

  • 将 unity 代码转换为 ActionScript 期间出错
  • 编译已转换代码时出错。

转换期间出现的错误将指向原始文件,并且将出现与文件名称和行数相似的 UnityScript 错误信息。

编译已转换的 ActionScript 期间出现的错误将显示生成的 ActionScript 代码(文件名结尾为 .as)中的信息。


调试已转换的 ActionScript 代码

构建期间,转换的 ActionScript (.as) 文件存储在工程文件夹中,位于:

  • /Temp/StagingArea/Data/ConvertedDotNetCode/

如果 SWF 出现错误(运行时或构建期间),查看这个转换的代码可帮助您解决问题。

编译期间出现的任何 ActionScript 错误都不易发现。但只需记住,ActionScript 是使用游戏脚本代码生成的,因此,所需的任何更改都将在原始代码中,而非转换的 ActionScript 文件中进行。


构建特定的 Flash Player 版本

构建设置窗口中的下拉框可供您选择所需的 Flash Player 目标版本。这将始终在创建/重新打开 Unity 工程时将支持的最低 Flash Player 版本(目前为 11.2)设为默认的目标版本。

如需构建特定的 Flash Player 版本,可以创建编辑器脚本来执行所需的构建任务。为此,使用编辑器脚本构建 Flash 时,您可以在 EditorUserBuildSettings 中指定 FlashBuildSubtarget。例如:

EditorUserBuildSettings.flashBuildSubtarget = FlashBuildSubtarget.Flash11dot2;
BuildPipeline.BuildPlayer(..., ..., BuildTarget.FlashPlayer, BuildOptions.Development);


构建错误与警告示例

以下是使用 Flash 导出功能时可能遇见的一些常见错误/警告。如果下方未列出您遇见的错误,我们在论坛问答部分专门介绍了 Flash 导出功能。

找不到 Java

Error building Player:Exception:Compiling SWF Failed:Unable to launch Java - is the Java Runtime Environment (JRE) installed?

如果在构建期间遇见上述错误,请安装 32位 JRE,然后重试。


不支持 'TerrainCollider'

'TerrainCollider' is not supported when building for FlashPlayer. 
'TerrainData' is not supported when building for FlashPlayer. 
Asset:'Assets/New Terrain.asset'

构建 FlashPlayer 目标时不支持地形功能。所有不支持的功能将生成相似的警告。注意,构建会继续进行,但最终的 SWF 将丢失不支持的功能。


取消装箱 (Unboxing)

Error:Call to a possibly undefined method RuntimeServices_UnboxSingle_Object through a reference with static type Class.

这可能是由于在 UnityScript 定义的类型之间的转换未在 Flash Publisher 中定义。任何时候看见指示取消装箱 (Unbox) 的错误时,这表示需要转换某种类型,但找不到该类型。要解决这些问题:

  • 请务必使用 #pragma strict,并小心处理所有 "implicit downcast" 警告信息。
  • 经验法则用于避免运行时将对象 (Object) 强制转换为原始对象类型 (int, float, etc.)。含显示类型的容器也将优先于普通容器,例如:
    • System.Collections.Generic.List.<float> 优于数组 (Array)
    • Dictionary<string, float> 优于 Hashtable


UnauthorizedAccessException

Error building Player:UnauthorizedAccessException:Access to the path "Temp/StagingArea/Data/ConvertedDotNetCode/global" is denied.

如果 Unity 生成的 ActionScript 文件可在文本编辑器中打开,Unity 可能会拒绝制定此错误的解决方案。要解决此问题,请关闭 ActionScript 文件并允许 Unity 覆盖这些文件。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文