Optimize live loading

This commit is contained in:
CroakFang
2022-09-27 00:11:12 +08:00
parent 686c41478a
commit cfeb262f49
3 changed files with 43 additions and 12 deletions
+8 -4
View File
@@ -10,6 +10,7 @@ using System.IO;
using System.Linq;
using UmaMusumeAudio;
using UnityEngine;
using static UmaViewerMain;
public class UmaViewerBuilder : MonoBehaviour
{
@@ -344,10 +345,11 @@ public class UmaViewerBuilder : MonoBehaviour
RecursiveLoadAsset(entry);
}
public void LoadLive(int id)
public void LoadLive(LiveEntry live)
{
var asset = UmaViewerMain.Instance.AbList.FirstOrDefault(a => a.Name.EndsWith("cutt_son" + id));
if (asset == null) return;
var asset = UmaViewerMain.Instance.AbList.FirstOrDefault(a => a.Name.EndsWith("cutt_son" + live.MusicId));
var BGasset = UmaViewerMain.Instance.AbList.FirstOrDefault(a => a.Name.EndsWith($"pfb_env_live{live.BackGroundId}_controller000"));
if (asset == null|| BGasset == null) return;
if (CurrentLiveContainer != null)
{
@@ -356,6 +358,7 @@ public class UmaViewerBuilder : MonoBehaviour
UnloadAllBundle();
CurrentLiveContainer = new GameObject(Path.GetFileName(asset.Name)).AddComponent<UmaContainer>();
RecursiveLoadAsset(asset);
RecursiveLoadAsset(BGasset);
}
@@ -818,7 +821,8 @@ public class UmaViewerBuilder : MonoBehaviour
private void LoadProp(GameObject go)
{
var prop = Instantiate(go, (go.name.Contains("Cutt_son") ? CurrentLiveContainer : CurrentOtherContainer).transform);
var container = (go.name.Contains("Cutt_son") || go.name.Contains("pfb_env_live")) ? CurrentLiveContainer : CurrentOtherContainer;
var prop = Instantiate(go, container.transform);
foreach (Renderer r in prop.GetComponentsInChildren<Renderer>())
{
foreach (Material m in r.sharedMaterials)
+34 -7
View File
@@ -61,18 +61,32 @@ public class UmaViewerMain : MonoBehaviour
yield return UmaViewerDownload.DownloadText("https://www.tracenacademy.com/api/BasicLiveDataInfo", txt =>
{
UmaLiveData = JArray.Parse(txt);
foreach (var item in UmaLiveData)
var asset = AbList.FirstOrDefault(a => a.Name.Equals("livesettings"));
if(asset != null)
{
if (!Lives.Where(c => c.MusicId == (int)item["musicId"]).Any())
string filePath = UmaDatabaseController.GetABPath(asset);
if (File.Exists(filePath))
{
Lives.Add(new LiveEntry()
AssetBundle bundle = AssetBundle.LoadFromFile(filePath);
foreach (var item in UmaLiveData)
{
MusicId = (int)item["musicId"],
songName = (string)item["songName"]
});
if (!Lives.Where(c => c.MusicId == (int)item["musicId"]).Any())
{
if (bundle.Contains((string)item["musicId"]))
{
TextAsset liveData = bundle.LoadAsset<TextAsset>((string)item["musicId"]);
Lives.Add(new LiveEntry(liveData.text)
{
MusicId = (int)item["musicId"],
songName = (string)item["songName"]
});
}
}
}
UI.LoadLivePanels();
}
}
UI.LoadLivePanels();
});
}
@@ -93,5 +107,18 @@ public class UmaViewerMain : MonoBehaviour
{
public int MusicId;
public string songName;
public string BackGroundId;
public List<string[]> LiveSettings = new List<string[]>();
public LiveEntry(string data)
{
string[] lines = data.Split("\n"[0]);
for (int i = 1; i < lines.Length; i++)
{
LiveSettings.Add(lines[i].Split(','));
}
BackGroundId = LiveSettings[1][2];
}
}
}
+1 -1
View File
@@ -159,7 +159,7 @@ public class UmaViewerUI : MonoBehaviour
var imageInstance1 = container.GetComponent<Image>();
container.Button.onClick.AddListener(() => {
HighlightChildImage(LiveList.content, imageInstance1);
Builder.LoadLive(live.MusicId);
Builder.LoadLive(live);
});
var CharaContainer = Instantiate(UmaContainerNoTMPPrefab, LiveSoundList.content).GetComponent<UmaUIContainer>();