131 lines
3.6 KiB
C#
131 lines
3.6 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using TMPro;
|
|
using System.Collections.Generic;
|
|
using System.Collections;
|
|
using System.Linq;
|
|
|
|
public class TestDanMuPlayer : MonoBehaviour
|
|
{
|
|
[Header("Component References")]
|
|
[SerializeField] private DanMuPlayer danMuPlayer;
|
|
[SerializeField] private Button sendBtn;
|
|
[SerializeField] private Button clearBtn;
|
|
[SerializeField] private Toggle loopToggle;
|
|
[SerializeField] private TMP_InputField inputField;
|
|
[SerializeField] private Button testBatchBtn;
|
|
|
|
[Header("Test Settings")]
|
|
[SerializeField] private int batchTestCount = 20;
|
|
|
|
[Header("Sample Danmaku Content")]
|
|
[SerializeField]
|
|
private List<string> sampleTexts = new List<string>()
|
|
{
|
|
"我也想要安娜",
|
|
"如何通关困难模式",
|
|
"这个游戏太好玩了",
|
|
"我喜欢休闲游戏",
|
|
"哪里能买到猫爪蛋糕",
|
|
"SP角色什么时候返场",
|
|
"需要强力的辅助角色",
|
|
"这抽卡概率是真的吗",
|
|
"我该优先培养哪个角色",
|
|
"求宿舍装修灵感"
|
|
};
|
|
|
|
[Header("Random Game Terms")]
|
|
[SerializeField]
|
|
private List<string> gameTerms = new List<string>()
|
|
{
|
|
"如何提高安娜的暴击率",
|
|
"队伍搭配推荐",
|
|
"这个活动BOSS太难了",
|
|
"每日任务速通攻略",
|
|
"强化材料不够用",
|
|
"公会还招人吗",
|
|
"这个皮肤值得买吗",
|
|
"哪里刷共鸣材料",
|
|
"卡在战力瓶颈了",
|
|
"好友系统需要改进"
|
|
};
|
|
|
|
private void Awake()
|
|
{
|
|
sendBtn.onClick.AddListener(OnSendClick);
|
|
clearBtn.onClick.AddListener(OnClearClick);
|
|
loopToggle.onValueChanged.AddListener(OnLoopToggleChanged);
|
|
testBatchBtn.onClick.AddListener(OnTestBatchClick);
|
|
}
|
|
|
|
void Start()
|
|
{
|
|
InitializeDemoDanmaku();
|
|
}
|
|
|
|
private void InitializeDemoDanmaku()
|
|
{
|
|
//danMuPlayer.Play(GetCombinedDanmakuList(), loopToggle.isOn);
|
|
}
|
|
|
|
private List<string> GetCombinedDanmakuList()
|
|
{
|
|
return sampleTexts.Concat(gameTerms.OrderBy(x => Random.value).Take(5)).ToList();
|
|
}
|
|
|
|
private void OnSendClick()
|
|
{
|
|
if (!string.IsNullOrEmpty(inputField.text))
|
|
{
|
|
string styledText = $"<color=#FF3366>{inputField.text}</color>";
|
|
danMuPlayer.LaunchUserDanmaku(styledText);
|
|
inputField.text = "";
|
|
}
|
|
}
|
|
|
|
private void OnClearClick()
|
|
{
|
|
danMuPlayer.ClearAllDanmakus();
|
|
}
|
|
|
|
private void OnLoopToggleChanged(bool isOn)
|
|
{
|
|
danMuPlayer.ToggleLoop(isOn);
|
|
if (isOn && danMuPlayer.GetLoopListCount() == 0)
|
|
{
|
|
//danMuPlayer.Play(GetCombinedDanmakuList(), true);
|
|
}
|
|
}
|
|
|
|
private void OnTestBatchClick()
|
|
{
|
|
StartCoroutine(SendBatchDanmaku());
|
|
}
|
|
|
|
private IEnumerator SendBatchDanmaku()
|
|
{
|
|
var combinedList = GetCombinedDanmakuList();
|
|
|
|
for (int i = 0; i < Mathf.Min(batchTestCount, combinedList.Count); i++)
|
|
{
|
|
string text = combinedList[i];
|
|
bool isUser = Random.value > 0.8f;
|
|
|
|
if (text.Contains("Anna") || text.Contains("cat paw cake"))
|
|
{
|
|
text = $"<size=36><color=#FF3366>{text}</color></size>";
|
|
}
|
|
|
|
if (isUser)
|
|
{
|
|
danMuPlayer.LaunchUserDanmaku($"<b>Player{i}:</b> {text}");
|
|
}
|
|
else
|
|
{
|
|
danMuPlayer.LaunchDanmaku($"System:{text}", true);
|
|
}
|
|
|
|
yield return new WaitForSeconds(Random.Range(0.05f, 0.15f));
|
|
}
|
|
}
|
|
} |