using System; using System.Collections.Generic; using Script; using Stary.Evo; using Stary.Evo.UIFarme; using UnityEngine; using UnityEngine.U2D; using UnityEngine.UI; using Random = UnityEngine.Random; namespace Unity.RenderStreaming { public class StartPanel : BasePanel { /// /// 每个Participant的UI信息 /// private readonly Dictionary participantUIs = new(); /// /// 返回按钮 /// private Button _arrowLeft; private Text _meetingId; /// /// 房间号输入框 /// private InputField _meetingNameInput; private Image _profileImage; /// /// 头像按钮 /// private Button _profilePhoto; private int _profileSpriteIndex; private Sprite[] _profileSprites; /// /// 随机房间号按钮 /// private Button _randomMeetingId; /// /// 头像Sprite Atlas /// private SpriteAtlas _spriteAtlas; /// /// 开始按钮 /// private Button _startButton; /// /// 时间下拉选择框 /// private Dropdown _timeDropdown; /// /// Host连接 /// private HostConnection hostConnection; /// /// 本地视频显示 /// private RawImage localVideoImage; /// /// 麦克风流发送器 /// private AudioStreamSender microphoneStreamer; [Header("Participant视频容器")] private Transform participantVideoContainer; /// /// 渲染流管理 /// private SignalingManager renderStreaming; [Header("核心组件")] private RenderStreamingSettings settings; [Header("Host本地视频")] private VideoStreamSender videoStreamSender; public override UITweenType TweenType => UITweenType.Fade; public override string UIPath => "Canvas"; public override void Initialize(GameObject panelGo) { base.Initialize(panelGo); renderStreaming = GameObject.FindObjectOfType(); hostConnection = GameObject.FindObjectOfType(); videoStreamSender = hostConnection.GetComponent(); microphoneStreamer = hostConnection.GetComponent(); if (settings == null) settings = new RenderStreamingSettings(); if (settings != null) { videoStreamSender.width = (uint)settings.StreamSize.x; videoStreamSender.height = (uint)settings.StreamSize.y; } if (renderStreaming.runOnAwake) return; if (settings != null) renderStreaming.useDefaultSettings = settings.UseDefaultSettings; if (settings?.SignalingSettings != null) renderStreaming.SetSignalingSettings(settings.SignalingSettings); renderStreaming.Run(); _arrowLeft = panelGo.transform.Find("Herder/arrow-left").GetComponent