VirtualFramework/Assets/Scripts/UI/UITextWindow.cs

122 lines
3.6 KiB
C#
Raw Normal View History

2025-03-08 14:05:03 +08:00
using UnityEngine;
using UnityEngine.UI;
using QFramework;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using TMPro;
using UnityEngine.UIElements;
namespace QFramework.Example
{
public class UITextWindowData : UIPanelData
{
public string text;
public string audio;
public string title;
public List<string> btns;
public float scrollSpeed = 25;
public string position;
2025-05-12 15:27:56 +08:00
public string vidoePath;
2025-03-08 14:05:03 +08:00
}
public partial class UITextWindow : UIPanel
{
ResLoader loader;
protected override void OnInit(IUIData uiData = null)
{
mData = uiData as UITextWindowData ?? new UITextWindowData();
loader = ResLoader.Allocate();
TypeEventSystem.Global.Register<OnModuleQuit>((arg) => Hide()).UnRegisterWhenGameObjectDestroyed(gameObject);
// please add init code here
}
protected override void OnOpen(IUIData uiData = null)
{
mData = uiData as UITextWindowData ?? new UITextWindowData();
Des.text = Regex.Replace(mData.text, @"\\n", "\n");
BtnContent.RemoveAllChildren();
if (mData.btns != null)
{
foreach (var item in mData.btns)
{
GameObject btn = GameObject.Instantiate(Btn.gameObject, BtnContent);
btn.transform.Find("Label").GetComponent<TextMeshProUGUI>().text = item;
btn.name = item;
}
}
if (string.IsNullOrEmpty(mData.audio) == false)
{
string path = Global.audioPath + mData.audio;
loader = ResLoader.Allocate();
loader.Add2Load(path.ToLocalAudioResName(), (success, res) =>
{
if (success)
{
AudioKit.PlayVoice(res.Asset.As<AudioClip>(), false);
}
});
loader.LoadAsync();
}
Title.text = mData.title;
Scroll.verticalNormalizedPosition = 1;
switch (mData.position)
{
case "left":
// <20><>ê<EFBFBD><C3AA><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>м䣨Middle-Right<68><74>
Content.rectTransform.anchorMin = new Vector2(0, 0.5f); // <20><><EFBFBD><EFBFBD>ê<EFBFBD><EFBFBD>Ҳࣩ
Content.rectTransform.anchorMax = new Vector2(0, 0.5f); // <20><><EFBFBD><EFBFBD>ê<EFBFBD><EFBFBD>Ҳࣩ
// <20><>λ<EFBFBD><CEBB>ƫ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><E3A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ê<EFBFBD>
Content.rectTransform.anchoredPosition = Vector2.zero;
// <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>Ϊ<EFBFBD>Ҳ<EFBFBD><D2B2>е㣨Ӱ<E3A3A8><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ת<EFBFBD><D7AA><EFBFBD>ģ<EFBFBD>
Content.rectTransform.pivot = new Vector2(0, 0.5f);
break;
case "right":
default:
// <20><>ê<EFBFBD><C3AA><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҳ<EFBFBD><D2B2>м䣨Middle-Right<68><74>
Content.rectTransform.anchorMin = new Vector2(1, 0.5f); // <20><><EFBFBD><EFBFBD>ê<EFBFBD><EFBFBD>Ҳࣩ
Content.rectTransform.anchorMax = new Vector2(1, 0.5f); // <20><><EFBFBD><EFBFBD>ê<EFBFBD><EFBFBD>Ҳࣩ
// <20><>λ<EFBFBD><CEBB>ƫ<EFBFBD>ƹ<EFBFBD><C6B9><EFBFBD><E3A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ê<EFBFBD>
Content.rectTransform.anchoredPosition = Vector2.zero;
// <20><>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĵ<EFBFBD>Ϊ<EFBFBD>Ҳ<EFBFBD><D2B2>е㣨Ӱ<E3A3A8><D3B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><>ת<EFBFBD><D7AA><EFBFBD>ģ<EFBFBD>
Content.rectTransform.pivot = new Vector2(1, 0.5f);
break;
}
2025-05-12 15:27:56 +08:00
if (string.IsNullOrEmpty(mData.vidoePath)){
}
else
{
}
2025-03-08 14:05:03 +08:00
}
protected override void OnShow()
{
}
protected override void OnHide()
{
}
protected override void OnClose()
{
}
2025-05-12 15:27:56 +08:00
2025-03-08 14:05:03 +08:00
}
}