/*---------------------------------------------------------------- // 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 { /// /// 创建 UI 视频播放器 (RawImage) /// [MenuItem("GameObject/Leviathan Video/Leviathan Video Player (UI)", false, 10)] private static void CreateUIVideoPlayer(MenuCommand menuCommand) { // 创建 GameObject GameObject go = new GameObject("LeviathanVideoPlayer"); // 添加 RectTransform(UI 组件需要) RectTransform rectTransform = go.AddComponent(); rectTransform.sizeDelta = new Vector2(400, 300); // 添加 RawImage 组件(LeviathanVideoDecoder 需要) RawImage rawImage = go.AddComponent(); rawImage.color = Color.white; // 添加视频解码器组件 go.AddComponent(); // 设置父物体 GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject); // 如果没有父物体,尝试放到 Canvas 下 if (go.transform.parent == null) { Canvas canvas = Object.FindObjectOfType(); if (canvas != null) { go.transform.SetParent(canvas.transform, false); } else { // 如果没有 Canvas,创建一个 GameObject canvasGO = new GameObject("Canvas"); canvas = canvasGO.AddComponent(); canvas.renderMode = RenderMode.ScreenSpaceOverlay; canvasGO.AddComponent(); canvasGO.AddComponent(); go.transform.SetParent(canvas.transform, false); } } // 注册撤销 Undo.RegisterCreatedObjectUndo(go, "Create Leviathan Video Player (UI)"); // 选中创建的对象 Selection.activeObject = go; } /// /// 创建 3D 视频播放器 (Cube) /// [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(); // 设置父物体 GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject); // 注册撤销 Undo.RegisterCreatedObjectUndo(go, "Create Leviathan Video Player (3D Cube)"); // 选中创建的对象 Selection.activeObject = go; } /// /// 创建 3D 视频播放器 (Quad/Plane) /// [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(); // 设置父物体 GameObjectUtility.SetParentAndAlign(go, menuCommand.context as GameObject); // 注册撤销 Undo.RegisterCreatedObjectUndo(go, "Create Leviathan Video Player (3D Quad)"); // 选中创建的对象 Selection.activeObject = go; } }