Files
tysdk-intergration/sdk-intergration/LocalPackages/LeviathanVideo/Editor/LeviathanVideoMenu.cs
2026-03-24 11:43:22 +08:00

112 lines
3.9 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/*----------------------------------------------------------------
// Copyright (C) 2025 Beijing All rights reserved.
//
// Author: huachangmiao
// Create Date: 2025/04/11
// Module Describe: Hierarchy 右键菜单创建视频播放器
//----------------------------------------------------------------*/
using UnityEngine;
using UnityEditor;
using UnityEngine.UI;
public static class LeviathanVideoMenu
{
/// <summary>
/// 创建 UI 视频播放器 (RawImage)
/// </summary>
[MenuItem("GameObject/Leviathan Video/Leviathan Video Player (UI)", false, 10)]
private static void CreateUIVideoPlayer(MenuCommand menuCommand)
{
// 创建 GameObject
GameObject go = new GameObject("LeviathanVideoPlayer");
// 添加 RectTransformUI 组件需要)
RectTransform rectTransform = go.AddComponent<RectTransform>();
rectTransform.sizeDelta = new Vector2(400, 300);
// 添加 RawImage 组件LeviathanVideoDecoder 需要)
RawImage rawImage = go.AddComponent<RawImage>();
rawImage.color = Color.white;
// 添加视频解码器组件
go.AddComponent<LeviathanVideoDecoder>();
// 设置父物体
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
// 如果没有父物体,尝试放到 Canvas 下
if (go.transform.parent == null)
{
Canvas canvas = Object.FindObjectOfType<Canvas>();
if (canvas != null)
{
go.transform.SetParent(canvas.transform, false);
}
else
{
// 如果没有 Canvas创建一个
GameObject canvasGO = new GameObject("Canvas");
canvas = canvasGO.AddComponent<Canvas>();
canvas.renderMode = RenderMode.ScreenSpaceOverlay;
canvasGO.AddComponent<CanvasScaler>();
canvasGO.AddComponent<GraphicRaycaster>();
go.transform.SetParent(canvas.transform, false);
}
}
// 注册撤销
Undo.RegisterCreatedObjectUndo(go, "Create Leviathan Video Player (UI)");
// 选中创建的对象
Selection.activeObject = go;
}
/// <summary>
/// 创建 3D 视频播放器 (Cube)
/// </summary>
[MenuItem("GameObject/Leviathan Video/Leviathan Video Player (3D Cube)", false, 11)]
private static void Create3DVideoPlayerCube(MenuCommand menuCommand)
{
// 创建 Cube
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Cube);
go.name = "LeviathanVideoPlayer3D";
// 添加视频渲染器组件
go.AddComponent<LeviathanVideo3DRenderer>();
// 设置父物体
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
// 注册撤销
Undo.RegisterCreatedObjectUndo(go, "Create Leviathan Video Player (3D Cube)");
// 选中创建的对象
Selection.activeObject = go;
}
/// <summary>
/// 创建 3D 视频播放器 (Quad/Plane)
/// </summary>
[MenuItem("GameObject/Leviathan Video/Leviathan Video Player (3D Quad)", false, 12)]
private static void Create3DVideoPlayerQuad(MenuCommand menuCommand)
{
// 创建 Quad
GameObject go = GameObject.CreatePrimitive(PrimitiveType.Quad);
go.name = "LeviathanVideoPlayer3D";
// 添加视频渲染器组件
go.AddComponent<LeviathanVideo3DRenderer>();
// 设置父物体
GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject);
// 注册撤销
Undo.RegisterCreatedObjectUndo(go, "Create Leviathan Video Player (3D Quad)");
// 选中创建的对象
Selection.activeObject = go;
}
}