CriManaMovieController
- "CriManaMovieController 组件"用于控制 CRI Sofdec 中的视频播放。
- 在[Inspector]中,你可以为 CriWare.CriManaMovieController 组件设置视频播放的参数。
如需了解有关其参数的详细信息,请查看 CriWare.CriManaMovieController 。
以下显示了简易的使用方法:
- 请从 Unity Editor 中的 Inspector 中输入视频文件的名称。
请注意,仅输入文件名,无需含有目录名称(例:sample_256x256.usm)。 视频文件则需要配置于StreamingAssets文件夹中。
使用一个自定义Shader
- CriManaMovieController 可更改用于视频播放的Shader。 请使用 CriManaMovieController.player.SetShaderDispatchCallback 方法来更改Shader。
如使用该方法,一个用于Shader分配的调用函数将被进行登记。
例,以下组能够简单地附加至分配了 CriManaMovieController 组件的对象。
public class AttacheUserCustomShader : MonoBehaviour {
void OnEnable () {
CriManaMovieController controller = GetComponent<CriManaMovieController>();
controller.player.SetShaderDispatchCallback(ShaderDispatch);
}
static UnityEngine.Shader ShaderDispatch(MovieInfo movieInfo,
bool additiveMode)
{
if (movieInfo.codecType != CodecType.SofdecPrime) {
Debug.LogError("未知编码器类型");
return Shader.Find("VertexLit");
}
return Shader.Find(additiveMode ? "用于添加渲染的Shader名称" : "不用于添加渲染的Shader名称");
}
}
请注意,登记必须在播放视频前完成。
创建一个自定义Shader
- 使用 ShaderLab 语言来描述一个自定义Shader。
默认Shader可在以下位置中找到。请将它们作为创建自定义Shader的参考。
如需了解更多有关 ShaderLab 语言的信息,请查看Unity参考手册。
CriManaMovieControllerForUI
- 该组件用于在 Unity UI 上播放视频。其基本使用方法与 CriManaMovieController 的相同,以及 CriManaMovieControllerForUI.target 并不接收 UnityEngine.Renderer ,而是接收 UnityEngine.UI.Graphic 。
丢弃组件时的注意事项
- 在执行此组件的Destroy操作时,内部调用的停止函数会等待状态转换的完成,故可以支持播放中进行销毁操作。
但是,如在纹理渲染期间执行销毁操作时,根据操作时机可能会出现意外问题。
因此,建议先明确地停止播放,等待转换为停止状态后再丢弃组件。
从 CriManaPlayer 迁移至 CriManaMovieController
- 本部分解释了关于从 CriManaPlayer 迁移至 CriManaMovieController的记录。
Unity Editor 的变化
- 在属性编辑器中显示附加了 CriManaPlayer 的对象。
- 移除了 CriManaPlayer 组件。
- 附加了 CriManaMovieController 组件。
CriManaMovieController 组件不包含 CriManaPlayer 组件的以下属性:
使用 Unity API 中 Material 组的 SetTextureOffset 方法替换了程序中的Flip(翻转)属性。
CriMana.Player 组的 SetVolume 方法替换了Volume(音量)属性。
脚本的变化
使用 CriManaMovieController 组件替换了 CriManaPlayer 组件。
以下显示了方法以及属性中的基础成员的对应关系:
CriManaPlayer 以及 CriManaMovieController 的关系
CriManaPlayer | CriManaMovieController |
SetFile | player.SetFile |
Play | player.Start |
Stop | player.Stop |
status | player.status |
以下显示了脚本替换的范例。
请将其用作参考。
- CriManaPlayer (替换前)
public GameObject movieObject;
private CriManaPlayer moviePlayer;
private CriFsBinder binder;
moviePlayer = movieObject.AddComponent<CriManaPlayer>();
moviePlayer.SetFile(binder, "sample.usm");
moviePlayer.Play();
- CriManaMovieController (替换后)
public GameObject movieObject;
private CriManaMovieController moviePlayer;
private CriFsBinder binder;
moviePlayer = movieObject.AddComponent<CriManaMovieController>();
moviePlayer.useOriginalMaterial = true;
moviePlayer.player.SetFile(binder, "sample.usm");
moviePlayer.player.Start();