添加Vec3InputField和其预制件
代码要改,还没写好,而且我不知道为什么在inputField那里的方法不管用,transform的GetFields()都是空的
This commit is contained in:
File diff suppressed because one or more lines are too long
@@ -50,4 +50,6 @@ MonoBehaviour:
|
||||
type: 3}
|
||||
inputField: {fileID: 2642348292953561022, guid: 94ed5dfb5df8c408faa267d2915aaeeb,
|
||||
type: 3}
|
||||
Vec3inputField: {fileID: 8936320662031972394, guid: 9e72408c17dfe4740b0e9060d6b3fafa,
|
||||
type: 3}
|
||||
text: {fileID: 2642348292953561022, guid: 4b0098f7176cb49d6ac968b7d3ca4c51, type: 3}
|
||||
|
||||
@@ -128,6 +128,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
title: {fileID: 2155341055219784103}
|
||||
gridLayoutGroup: {fileID: 7819072094691725340}
|
||||
dynamicUIElements: []
|
||||
rect: {fileID: 6615467020619937658}
|
||||
--- !u!114 &5446580967707006926
|
||||
|
||||
2147
Assets/Prefabs/DynamicUI/Elements/Vec3InputField.prefab
Normal file
2147
Assets/Prefabs/DynamicUI/Elements/Vec3InputField.prefab
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 9e72408c17dfe4740b0e9060d6b3fafa
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
File diff suppressed because one or more lines are too long
@@ -38,5 +38,6 @@ public class BasePrefabsCollection : SerializedScriptableObject
|
||||
[Title("DynamicUI相关")]
|
||||
public GameObject dynamicUIContainer;
|
||||
public GameObject inputField;
|
||||
public GameObject Vec3inputField;
|
||||
public GameObject text;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,32 @@ guid: 9bfe18cabd8814ad0b27f5969180c1d2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
defaultReferences:
|
||||
- emptyObject: {instanceID: 0}
|
||||
- elementFolder: {instanceID: 0}
|
||||
- gameCamera: {instanceID: 0}
|
||||
- track: {instanceID: 0}
|
||||
- pathNode: {instanceID: 0}
|
||||
- defaultTrackMaterial: {instanceID: 0}
|
||||
- trail: {instanceID: 0}
|
||||
- defaultTrailMaterial: {instanceID: 0}
|
||||
- tapNote: {instanceID: 0}
|
||||
- stayNote: {instanceID: 0}
|
||||
- holdNote: {instanceID: 0}
|
||||
- flickNote: {instanceID: 0}
|
||||
- tapNoteSound: {instanceID: 0}
|
||||
- stayNoteSound: {instanceID: 0}
|
||||
- holdNoteStartSound: {instanceID: 0}
|
||||
- holdNoteLoopSound: {instanceID: 0}
|
||||
- holdNoteEndSound: {instanceID: 0}
|
||||
- flickNoteSound: {instanceID: 0}
|
||||
- bloomShake: {instanceID: 0}
|
||||
- dynamicUIContainer: {instanceID: 0}
|
||||
- inputField: {fileID: 8936320662031972394, guid: 79e257fb81d2b0a4dade94526886cf0e,
|
||||
type: 3}
|
||||
- Vec3inputField: {fileID: 8936320662031972394, guid: 86a1f66d7e43c7e4a8ab14c84b86af8c,
|
||||
type: 3}
|
||||
- text: {fileID: 7331471404896706636, guid: 0420d23f7ef40d74183ba313464088cc, type: 3}
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
|
||||
@@ -25,7 +25,9 @@ namespace Ichni.Editor
|
||||
private int historycount=0;
|
||||
public GameObject ConsoleUI;
|
||||
|
||||
|
||||
public Hierarchy hierarchy;
|
||||
public Inspector inspector;
|
||||
bool isHide=false;
|
||||
|
||||
public void GetChange(string change){
|
||||
|
||||
@@ -42,6 +44,11 @@ namespace Ichni.Editor
|
||||
}catch(Exception e){Debug.LogWarning("WTF Command! "+e);}
|
||||
}
|
||||
private void Update(){
|
||||
if(Input.GetKeyDown(KeyCode.BackQuote)){
|
||||
hierarchy.gameObject.SetActive(isHide);
|
||||
inspector.gameObject.SetActive(isHide);
|
||||
isHide=!isHide;
|
||||
}
|
||||
if(InputCommand.isFocused){
|
||||
if(Input.GetKeyDown(KeyCode.DownArrow)){
|
||||
if(historyCommand.Count-1>historycount){
|
||||
|
||||
@@ -3,13 +3,19 @@ using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
using UnityEngine.UI;
|
||||
|
||||
namespace Ichni.Editor
|
||||
{
|
||||
public class DynamicUIContainer : MonoBehaviour
|
||||
{
|
||||
public TMP_Text title;
|
||||
public GridLayoutGroup gridLayoutGroup;
|
||||
public List<DynamicUIElement> dynamicUIElements = new List<DynamicUIElement>();
|
||||
[FormerlySerializedAs("container")] public RectTransform rect;
|
||||
|
||||
public void setVoH(bool VoH){
|
||||
if(VoH)gridLayoutGroup.cellSize=new Vector2(250,100);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,6 +13,7 @@ namespace Ichni.Editor
|
||||
{
|
||||
base.Initialize(title, parameterName);
|
||||
inputField.text = connectedGameElement.GetType().GetField(parameterName).GetValue(connectedGameElement).ToString(); //获取对应变量的值
|
||||
|
||||
inputField.onEndEdit.AddListener(ApplyParameters); //输入结束后修改变量
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,58 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements.Experimental;
|
||||
namespace Ichni.Editor{
|
||||
public class DynamicUIVec3InputField : DynamicUIElement
|
||||
{
|
||||
public TMP_InputField inputFieldx;
|
||||
public TMP_InputField inputFieldy;
|
||||
public TMP_InputField inputFieldz;
|
||||
Transform objtransform;
|
||||
|
||||
public override void Initialize(string title, string parameterName)
|
||||
{
|
||||
base.Initialize(title, parameterName);
|
||||
objtransform = connectedGameElement.transform;
|
||||
Vector3 pos = (Vector3)objtransform.GetType().GetProperty(parameterName).GetValue(objtransform);
|
||||
|
||||
|
||||
inputFieldx.text =pos.x.ToString();
|
||||
inputFieldx.onEndEdit.AddListener(ApplyParametersx);
|
||||
inputFieldy.text =pos.y.ToString();
|
||||
inputFieldx.onEndEdit.AddListener(ApplyParametersy);
|
||||
inputFieldz.text =pos.z.ToString();
|
||||
inputFieldx.onEndEdit.AddListener(ApplyParametersz);
|
||||
}//我不应该用这种复制大法的(
|
||||
|
||||
private void ApplyParametersx(string text)
|
||||
{
|
||||
Vector3 newpos=totramsf(float.Parse(text),0);
|
||||
transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos);
|
||||
|
||||
}
|
||||
private void ApplyParametersy(string text)
|
||||
{
|
||||
Vector3 newpos=totramsf(float.Parse(text),1);
|
||||
transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos);
|
||||
}
|
||||
private void ApplyParametersz(string text)
|
||||
{
|
||||
Vector3 newpos=totramsf(float.Parse(text),2);
|
||||
transform.GetType().GetProperty(parameterName).SetValue(objtransform,newpos);
|
||||
}
|
||||
|
||||
Vector3 totramsf(float value,int queue){
|
||||
Vector3 a= (Vector3)transform.GetType().GetProperty(parameterName).GetValue(connectedGameElement.transform);
|
||||
switch(queue){
|
||||
case 0:a.x=value;break;
|
||||
case 1:a.y=value;break;
|
||||
case 2:a.z=value;break;
|
||||
}
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8372da2ad7a105d4aa3904e8b3fdfd71
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -1,5 +1,6 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.InteropServices.WindowsRuntime;
|
||||
using Ichni.RhythmGame;
|
||||
using UnityEngine;
|
||||
|
||||
@@ -49,6 +50,14 @@ namespace Ichni.Editor
|
||||
container.dynamicUIElements.Add(inputField);
|
||||
return inputField;
|
||||
}
|
||||
public DynamicUIVec3InputField GenerateVec3InputField(DynamicUIContainer container, string title, string parameterName){
|
||||
DynamicUIVec3InputField a=Instantiate(EditorManager.instance.basePrefabs.Vec3inputField,container.rect).GetComponent<DynamicUIVec3InputField>();
|
||||
a.Initialize(title, parameterName);
|
||||
container.dynamicUIElements.Add(a);
|
||||
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
public DynamicUIText GenerateText(DynamicUIContainer container, string title, string parameterName, bool isAlwaysUpdate = false)
|
||||
{
|
||||
|
||||
@@ -6,6 +6,7 @@ using Ichni.RhythmGame.Beatmap;
|
||||
using Sirenix.OdinInspector;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace Ichni.RhythmGame
|
||||
{
|
||||
@@ -35,6 +36,9 @@ namespace Ichni.RhythmGame
|
||||
//存档类
|
||||
public BaseElement_BM matchedBM { get; set; }
|
||||
|
||||
private Inspector inspector;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 首次初始化
|
||||
/// </summary>
|
||||
@@ -42,6 +46,7 @@ namespace Ichni.RhythmGame
|
||||
public virtual void Initialize(string name, Guid elementGuid, List<string> tags,
|
||||
bool isFirstGenerated, GameElement parentElement)
|
||||
{
|
||||
inspector=EditorManager.instance.uiManager.inspector;
|
||||
this.elementName = name;
|
||||
this.elementGuid = elementGuid;
|
||||
this.tags = tags;
|
||||
@@ -138,10 +143,17 @@ namespace Ichni.RhythmGame
|
||||
{
|
||||
public virtual void SetUpInspector()
|
||||
{
|
||||
var container = EditorManager.instance.uiManager.inspector.GenerateContainer("Element Info");
|
||||
var nameInputField = EditorManager.instance.uiManager.inspector.GenerateInputField(container, "Element Name", nameof(elementName));
|
||||
var guidText = EditorManager.instance.uiManager.inspector.GenerateText(container, "Element GUID", nameof(elementGuid), true);
|
||||
var container = inspector.GenerateContainer("Element Info");
|
||||
var nameInputField = inspector.GenerateInputField(container, GetType().Name+"'s Name", nameof(elementName));
|
||||
var guidText = inspector.GenerateText(container, "Element GUID", nameof(elementGuid), true);
|
||||
var container2 = inspector.GenerateContainer("Element Property");
|
||||
container2.setVoH(true);
|
||||
var posInputField=inspector.GenerateVec3InputField(container2,"Position",nameof(transform.position));
|
||||
var rotInputField=inspector.GenerateVec3InputField(container2,"Rotation",nameof(transform.eulerAngles));
|
||||
var scaleInputField=inspector.GenerateVec3InputField(container2,"Scale",nameof(transform.localScale));
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
namespace Beatmap
|
||||
|
||||
Reference in New Issue
Block a user