Inspector内容开始填充完善

This commit is contained in:
SoulliesOfficial
2025-02-17 14:46:14 -05:00
parent d77e1a0f70
commit 8d4772532f
84 changed files with 4340 additions and 208 deletions

View File

@@ -1,18 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BackgroundController : MonoBehaviour
{
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
}
}

View File

@@ -0,0 +1,100 @@
using System;
using System.Collections;
using System.Collections.Generic;
using Ichni.RhythmGame;
using Ichni.RhythmGame.Beatmap;
using UnityEngine;
namespace Ichni.Editor
{
public partial class BackgroundSetter : GameElement
{
public bool useSkybox;
public string skyboxThemeBundleName;
public string skyboxMaterialName;
public Material skyboxMaterial;
public string backgroundSpriteName;
public Sprite backgroundSprite;
public static BackgroundSetter GenerateElement(string elementName, Guid id, List<string> tags,
bool isFirstGenerated, GameElement parentElement, bool useSkybox, string skyboxThemeBundleName,
string skyboxMaterialName, string backgroundSpriteName)
{
BackgroundSetter backgroundSetter = Instantiate(EditorManager.instance.basePrefabs.emptyObject)
.AddComponent<BackgroundSetter>();
backgroundSetter.Initialize(elementName, id, tags, isFirstGenerated, parentElement);
backgroundSetter.useSkybox = useSkybox;
backgroundSetter.skyboxThemeBundleName = skyboxThemeBundleName;
backgroundSetter.skyboxMaterialName = skyboxMaterialName;
backgroundSetter.backgroundSpriteName = backgroundSpriteName;
return backgroundSetter;
}
public void SetSkybox(string themeBundleName, string materialName)
{
skyboxThemeBundleName = themeBundleName;
skyboxMaterialName = materialName;
skyboxMaterial = ThemeBundleManager.instance.GetObject<Material>(themeBundleName, materialName);
if(skyboxMaterial == null) skyboxMaterial = EditorManager.instance.basePrefabs.defaultSkyboxMaterial;
EditorManager.instance.backgroundController.SetSkybox(skyboxMaterial);
}
public void SetBackgroundSprite(string backgroundSpriteName)
{
string path = EditorManager.instance.projectInformation.projectPath + "/Sprites/" + backgroundSpriteName + ".png";
backgroundSprite = ES3.FileExists(path) ? ES3.Load<Sprite>(path) : EditorManager.instance.basePrefabs.defaultBackground;
EditorManager.instance.backgroundController.SetBackground(backgroundSprite);
}
protected override void SetDefaultSubmodules()
{
}
public override void SetUpInspector()
{
var container = inspector.GenerateContainer("Background Setter");
var useSkyboxToggle = inspector.GenerateToggle(this, container, "Use Skybox", nameof(useSkybox));
var skyboxThemeBundleField = inspector.GenerateInputField(this, container, "Skybox Theme Bundle", nameof(skyboxThemeBundleName));
var skyboxMaterialNameField = inspector.GenerateInputField(this, container, "Skybox Material", nameof(skyboxMaterialName));
var backgroundSpriteField = inspector.GenerateInputField(this, container, "Background Sprite", nameof(backgroundSpriteName));
var applyButton = inspector.GenerateButton(this, container, "Apply", Refresh);
useSkyboxToggle.AddListenerFunction(EditorManager.instance.backgroundController.EnableBackground);
useSkyboxToggle.AddListenerFunction(value =>
{
skyboxThemeBundleField.inputField.interactable = value;
skyboxMaterialNameField.inputField.interactable = value;
backgroundSpriteField.inputField.interactable = !value;
});
}
public override void Refresh()
{
EditorManager.instance.backgroundController.EnableBackground(useSkybox);
if (useSkybox)
{
SetSkybox(skyboxThemeBundleName, skyboxMaterialName);
}
else
{
SetBackgroundSprite(backgroundSpriteName);
}
}
}
namespace Beatmap
{
public class BackgroundSetter_BM : BaseElement_BM
{
public BackgroundSetter_BM()
{
}
public override void ExecuteBM()
{
throw new System.NotImplementedException();
}
}
}
}