prefab工具
parent
276e8bc18a
commit
3dda2bbe23
|
|
@ -1,3 +1,4 @@
|
|||
using NPOI.OpenXmlFormats.Dml;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
|
|
@ -6,13 +7,62 @@ namespace PersonBrowser
|
|||
public class PlayerInfo
|
||||
{
|
||||
private string m_Name;
|
||||
private Transform m_Asset;
|
||||
public GameObject Player { get; }
|
||||
private Transform m_Asset
|
||||
{
|
||||
get
|
||||
{
|
||||
try { return Player.transform.GetChild(0); }
|
||||
catch { return null; }
|
||||
}
|
||||
}
|
||||
public GameObject Player { get; set; } // zheli;
|
||||
public GameObject Skill { get; }
|
||||
public Object Player_ac { get; }
|
||||
public GameObject Emoji { get; }
|
||||
public GameObject Gun { get; }
|
||||
public GameObject Bag { get; }
|
||||
public GameObject Emoji
|
||||
{
|
||||
get
|
||||
{
|
||||
try
|
||||
{
|
||||
return m_Asset.Find("Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 Neck/Bip001 Head/G_emoji/").gameObject;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
public GameObject Gun
|
||||
{
|
||||
get
|
||||
{
|
||||
// Get gun
|
||||
try
|
||||
{
|
||||
Transform grip = m_Asset.Find("Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/Grip_point01/");
|
||||
return grip.GetChild(0).gameObject;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
public GameObject Bag
|
||||
{
|
||||
get
|
||||
{ // Get bag
|
||||
try
|
||||
{
|
||||
Transform point1 = m_Asset.Find("Root/Bip001/Bip001 Spine/Mount_point01/");
|
||||
return point1.GetChild(0).gameObject;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
public GameObject Display { get; }
|
||||
public Object Display_ac { get; }
|
||||
public GameObject AutoGen { get; }
|
||||
|
|
@ -53,12 +103,10 @@ namespace PersonBrowser
|
|||
{
|
||||
string path = $"Assets/Art/Character/Prefabs/Players/P_{m_Name}.prefab";
|
||||
Player = AssetDatabase.LoadAssetAtPath<GameObject>(path);
|
||||
m_Asset = Player.transform.GetChild(0);
|
||||
}
|
||||
catch
|
||||
{
|
||||
Player = null;
|
||||
m_Asset = null;
|
||||
}
|
||||
|
||||
// Get skill animation
|
||||
|
|
@ -82,38 +130,6 @@ namespace PersonBrowser
|
|||
Player_ac = null;
|
||||
}
|
||||
|
||||
// Get emoji
|
||||
try
|
||||
{
|
||||
Emoji = m_Asset.Find("Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 Neck/Bip001 Head/G_emoji/").gameObject;
|
||||
}
|
||||
catch
|
||||
{
|
||||
Emoji = null;
|
||||
}
|
||||
|
||||
// Get gun
|
||||
try
|
||||
{
|
||||
Transform grip = m_Asset.Find("Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/Grip_point01/");
|
||||
Gun = grip.GetChild(0).gameObject;
|
||||
}
|
||||
catch
|
||||
{
|
||||
Gun = null;
|
||||
}
|
||||
|
||||
// Get bag
|
||||
try
|
||||
{
|
||||
Transform point1 = m_Asset.Find("Root/Bip001/Bip001 Spine/Mount_point01/");
|
||||
Bag = point1.GetChild(0).gameObject;
|
||||
}
|
||||
catch
|
||||
{
|
||||
Bag = null;
|
||||
}
|
||||
|
||||
// Get player_s prefab
|
||||
try
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,63 +6,110 @@ using UnityEditor;
|
|||
using UnityEditor.UIElements;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
public class PlayerEditor : EditorWindow
|
||||
namespace PersonBrowser
|
||||
{
|
||||
ObjectField charaField = null;
|
||||
ObjectField gunField = null;
|
||||
ObjectField bagField = null;
|
||||
[MenuItem("Test/prefab¹¤¾ß/Player Editor")]
|
||||
public static void ShowWindow()
|
||||
public class PlayerEditor : EditorWindow
|
||||
{
|
||||
GetWindow<PlayerEditor>("Player Editor");
|
||||
}
|
||||
ObjectField charaField = null;
|
||||
ObjectField gunField = null;
|
||||
ObjectField bagField = null;
|
||||
|
||||
public void CreateGUI()
|
||||
{
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
Label label1 = new Label("Edit Player");
|
||||
root.Add(label1);
|
||||
|
||||
charaField = new ObjectField("player prefab") { objectType = typeof(GameObject), allowSceneObjects = false };
|
||||
root.Add(charaField);
|
||||
|
||||
gunField = new ObjectField("add gun") { objectType = typeof(GameObject), allowSceneObjects = false };
|
||||
root.Add(gunField);
|
||||
|
||||
bagField = new ObjectField("add bag") { objectType = typeof(GameObject), allowSceneObjects = false };
|
||||
root.Add(bagField);
|
||||
|
||||
Button button1 = new()
|
||||
Box box1;
|
||||
[MenuItem("Test/prefab¹¤¾ß/Player Editor")]
|
||||
public static void ShowWindow()
|
||||
{
|
||||
name = "button1",
|
||||
text = "applay"
|
||||
};
|
||||
root.Add(button1);
|
||||
button1.RegisterCallback<ClickEvent>(EditPlayer);
|
||||
|
||||
TextElement textElement = new() { text = "µ÷ÕûºÃ±³°üλÖúó, Apply Overrides" };
|
||||
root.Add(textElement);
|
||||
}
|
||||
|
||||
private void EditPlayer(ClickEvent evt)
|
||||
{
|
||||
GameObject prefabRoot = (GameObject)PrefabUtility.InstantiatePrefab(charaField.value);
|
||||
Transform assetInstance = prefabRoot.transform.GetChild(0);
|
||||
Debug.Log(assetInstance.name);
|
||||
|
||||
|
||||
if (bagField.value != null)
|
||||
{
|
||||
Transform point01 = assetInstance.Find("Root/Bip001/Bip001 Spine/Mount_point01/");
|
||||
GameObject bag = (GameObject)PrefabUtility.InstantiatePrefab(bagField.value, point01);
|
||||
bag.transform.localEulerAngles = new Vector3(90, 0, 0);
|
||||
GetWindow<PlayerEditor>("Player Editor");
|
||||
}
|
||||
if (gunField.value != null)
|
||||
|
||||
public void CreateGUI()
|
||||
{
|
||||
Transform grip = assetInstance.Find("Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/Grip_point01/");
|
||||
GameObject gun = (GameObject)PrefabUtility.InstantiatePrefab(gunField.value, grip);
|
||||
gun.transform.localEulerAngles = new Vector3(90, 0, 0);
|
||||
VisualElement root = rootVisualElement;
|
||||
|
||||
Label label1 = new Label("Edit Player");
|
||||
root.Add(label1);
|
||||
|
||||
charaField = new ObjectField("player prefab") { objectType = typeof(GameObject), allowSceneObjects = false };
|
||||
root.Add(charaField);
|
||||
|
||||
gunField = new ObjectField("add gun") { objectType = typeof(GameObject), allowSceneObjects = false };
|
||||
root.Add(gunField);
|
||||
|
||||
bagField = new ObjectField("add bag") { objectType = typeof(GameObject), allowSceneObjects = false };
|
||||
root.Add(bagField);
|
||||
|
||||
Button button1 = new()
|
||||
{
|
||||
name = "button1",
|
||||
text = "applay"
|
||||
};
|
||||
root.Add(button1);
|
||||
button1.RegisterCallback<ClickEvent>(EditPlayer);
|
||||
|
||||
TextElement textElement = new() { text = "µ÷ÕûºÃ±³°üλÖúó, Apply Overrides" };
|
||||
root.Add(textElement);
|
||||
|
||||
box1 = new Box();
|
||||
root.Add(box1);
|
||||
}
|
||||
public void OnSelectionChange()
|
||||
{
|
||||
ShowSelected();
|
||||
}
|
||||
|
||||
private void ShowSelected()
|
||||
{
|
||||
box1.Clear();
|
||||
GameObject selected = Selection.activeObject as GameObject;
|
||||
try
|
||||
{
|
||||
selected.transform.GetChild(0);
|
||||
}
|
||||
catch
|
||||
{
|
||||
return;
|
||||
}
|
||||
PlayerInfo info = new(selected.transform.GetChild(0).name);
|
||||
info.Player = selected;
|
||||
|
||||
ObjectField playerField = new("Player");
|
||||
playerField.value = info.Player;
|
||||
box1.Add(playerField);
|
||||
|
||||
ObjectField skillField = new("----skill");
|
||||
skillField.value = info.Skill;
|
||||
box1.Add(skillField);
|
||||
|
||||
ObjectField emojiField = new("----emoji");
|
||||
emojiField.value = info.Emoji;
|
||||
box1.Add(emojiField);
|
||||
|
||||
ObjectField gunField = new("----gun");
|
||||
gunField.value = info.Gun;
|
||||
box1.Add(gunField);
|
||||
|
||||
ObjectField bagField = new("----bag");
|
||||
bagField.value = info.Bag;
|
||||
box1.Add(bagField);
|
||||
}
|
||||
private void EditPlayer(ClickEvent evt)
|
||||
{
|
||||
GameObject prefabRoot = (GameObject)PrefabUtility.InstantiatePrefab(charaField.value);
|
||||
Transform assetInstance = prefabRoot.transform.GetChild(0);
|
||||
Debug.Log(assetInstance.name);
|
||||
|
||||
|
||||
if (bagField.value != null)
|
||||
{
|
||||
Transform point01 = assetInstance.Find("Root/Bip001/Bip001 Spine/Mount_point01/");
|
||||
GameObject bag = (GameObject)PrefabUtility.InstantiatePrefab(bagField.value, point01);
|
||||
bag.transform.localEulerAngles = new Vector3(90, 0, 0);
|
||||
}
|
||||
if (gunField.value != null)
|
||||
{
|
||||
Transform grip = assetInstance.Find("Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/Grip_point01/");
|
||||
GameObject gun = (GameObject)PrefabUtility.InstantiatePrefab(gunField.value, grip);
|
||||
gun.transform.localEulerAngles = new Vector3(90, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue