CRIWARE Unity Plugin Manual  Last Updated: 2024-07-12
将视频数据植入游戏
本部分描述了如何将Sofdec工具创建的视频文件植入游戏,并回放文件。

请创建一个新的Unity项目,并将用于在CRI Sofdec中视频回放的对象放入场景。
以下为步骤。
创建新项目并导入插件安装包的流程和CRI ADX的 将数据植入游戏 的描述一样。
如果你使用过 "CRI ADX",你能够以 (3) 复制视频文件 开始。


(1) 创建Unity项目

(1-1) 创建一个Unity项目
请启动Unity并创建一个空白项目。
在本教程中, "TutorialMana" 文件夹将用作项目文件夹。
  • 在Project Wizard窗口中创建一个新项目
    请选择 File 目录中的 New Project
    将显示Project Wizard窗口。请指定你想要保存项目的文件夹。
    请不要选中 Import the following packages 列表中的任何选项。
    最后,请点击 Create Project 按钮来创建空白项目。

    sfd2u_qstart_game_newproj_mini.png
    [Project Wizard]
(1-2) 保存一个场景
在创建好一个新项目后,一个场景将会显示。它只包含了 "Main Camera"。
让我们来保存场景。
在本教程中,场景的名字就是 "NewScene"。
  • 使用 Save Scene 对话框
    请选择File目录中的Save Scene
    Save Scene对话框将会出现。请指定场景的名字。

    sfd2u_qstart_game_newscene_mini.png
    在创建好一个空白场景后
[注意]
在这里,Main Camera的坐标为(0, 1, -10)。

(2) 导入插件安装包

现在,请将 "CRIWARE Unity Plugin package" 导入至该项目。
插件安装包文件在SDK的以下位置:

  * cri

  \ * unity

    \ * plugin

      \ * criware_unity_plugin_smartphone.unitypackage

 

 

 

 

 

  • 导入自定义安装包
    请从Assets -> Import Package 菜单选中 Custom Package 菜单命令。
    一个文件对话框将显示。请指定以上的插件安装包文件夹并将其导入。

(3) 复制视频文件

(3-1) 准备文件
在本教程中,我们将使用 "sample_256x256.usm",即为一些用CRI Sofdec编码的视频数据。

范例数据的位置
  * cri

  \ * unity

    \ * samples

      \ * crimana

        \ * basic

          \ * Assets

            \ * StreamingAssets

              \ * sample_256x256.usm

 

 

 

CRI Sofdec 范例

 

 

 

视频文件

 

(3-2) 将文件复制至StreamingAssets
请将视频文件(USM文件)复制至Unity项目的资源文件夹底下的 "StreamingAssets" 子文件夹。

TutorialMana Unity项目的资源文件夹的结构
  * TutorialMana

  \ * Assets

    o * Editor

    o * Gizmos

    o * Plugins

    o * Resources

    \ * StreamingAssets

      \ * sample_256x256.usm

 

资源文件夹

 

 

CRIWARE Unity 插件

CRI Mana的着色器源

StreamingAssets 文件夹

USM文件

 

注意
如果想将USM文件作为CRI Asset使用,请参照以下的Asset Support Add-on页面。
当数据复制好后,Unity中的 "Project view" 将被刷新,并且画面如以下显示:

sfd2u_qstart_game_datafiles_mini.png
完成数据复制

(4) 创建 CRIWARE 库初始化器

在开始视频播放控制之前,请为 CRIWARE 以及错误处理模块添加全局初始化模块。
初始化模块的添加是必不可少的,如果没有添加它,播放将无法正常进行。
请从 Unity 菜单栏的 [CRI] menu 中,分别运行 [Create CRIWARE Library Initializer] 以及 [Create CRIWARE Error Handler] 指令。
在运行这些指令后, CriWareInitializer 以及 CriWareErrorHandler 将显示于分层窗口。
这时,用户无需更改它们的选项。

adx2u_qstart_game_initializer_hierarchy.png
当 CRIWARE 库初始化器被创建后

(5) 创建一个 CriManaMovieController

"CriManaMovieController 组件"用于在 CRI Sofdec 中控制视频的播放。
每个视频都需要有一个 CriWare.CriManaMovieController 组件才能播放。
在以下范例中,让我们在立方体上播放视频。

(5-1) 将 CriManaMovieController 组件添加至立方体
使用以下的步骤将 CriManaMovieController 组件添加至3D立方体。
  1. 从菜单中选择 GameObject -> 3D Object -> Cube 以创建一个立方体。
  2. 在 "Hierarchy view" 中选择立方体。
  3. 从菜单中选择 Component -> CRIWARE -> [CriManaMovieController

(5-2) 指定需要播放的视频文件
你可以在 "Inspector" 中为 CriManaMovieController 组件设置视频播放的参数。
请如下指定需要播放的视频文件名称,以及视频播放的方式(自动播放)。
  1. 在 "Hierarchy view" 中选择立方体。
  2. 请在 CriManaMovieController 组件的 Movie Path 一栏输入视频文件的名称,"sample_256x256.usm"。
    (该情况假设了视频文件存储于 StreamingAssets 文件夹。)
  3. 如需自动播放视频,请勾选 Play On Start 选择框。

(5-3) 播放视频
现在你可以播放视频了。
请点击 Unity 中的 Play 按钮以播放视频。

(6) 使用脚本来控制视频回放

到目前为止,工具只提供了基础的视频回放。现在,让我们添加一个脚本来控制视频回放。
我们将添加一个在使用鼠标点击盒子时暂停视频的脚本。
(6-1) 将控制视频回放的脚本添加至盒子
请使用以下步骤将脚本添加至盒子。
  1. 请选择"Hierarchy view"中的盒子。
  2. 请在"Project view"中右键,以创建一个C#脚本。
    请将文件重命名为"MoviePause"。
  3. 请将 MoviePause.cs 拖放至 "Hierarchy view" 以添加至盒子。

    sfd2u_qstart_game_add_pause_mini.png
    将脚本添加至盒子

启动 MonoDevelop 并如下显示来修改 MoviePause.cs 。

public class MoviePause : MonoBehaviour {
// 将其用于初始化
void Start () {
}
// 每帧将呼叫一次更新
private int Yaw_Speed = 10;
private int Pitch_Speed = 0;
private int Roll_Speed = 10;
void Update () {
// 在暂停状态为false时旋转盒子
if (pause_stat == false) {
transform.Rotate(Vector3.down * Time.deltaTime * Yaw_Speed);
transform.Rotate(Vector3.right * Time.deltaTime * Pitch_Speed);
transform.Rotate(Vector3.forward * Time.deltaTime * Roll_Speed);
}
}
// 当按下鼠标按键时呼叫
private bool pause_stat = false;
void OnMouseDown() {
// 切换暂停状态
pause_stat = (pause_stat == false)?true:false;
// 获取 CriManaPlayer 组件
CriManaPlayer mp = (CriManaPlayer)GetComponent("CriManaPlayer");
// 暂停视频回放
mp.Pause(pause_stat);
}
}

OnMouseDown函数
OnMouseDown函数将在点击鼠标按键时被呼叫。
脚本获取分配至对象的Cri Movie Player组件,并呼叫Pause函数。
如果传达至Pause函数的参数为true,回放将被暂停。如果是false,回放将继续。

Update函数
该函数在每一帧都会被呼叫。
在播放视频时,脚本将旋转盒子。

(6-2) 开始游戏
请点击Unity中的Play按钮来播放视频。
放置在盒子中的视频将被自动播放,盒子将会缓慢地旋转着。
每次点击盒子时,视频都会被暂停或继续播放。.

sfd2u_qstart_game_rotating_mini.png
播放视频时旋转的盒子