【资源路径】挪动autogen character路径

main
刘涛 2024-11-04 13:41:33 +08:00
parent 5fff8ce248
commit 016ba3ae8a
2172 changed files with 87 additions and 133 deletions

View File

@ -532,7 +532,7 @@ PrefabInstance:
type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 22100000, guid: 583c9642aa9f22c4ca90b1a8ed3282a1,
objectReference: {fileID: 22100000, guid: 0b49c2d1672f6724487f40580aad5b0f,
type: 2}
- target: {fileID: 5866666021909216657, guid: 905ae54a845bc824da490e04dfaec99e,
type: 3}

View File

@ -329,7 +329,7 @@ PrefabInstance:
type: 3}
propertyPath: m_Controller
value:
objectReference: {fileID: 22100000, guid: 13d9cdb2f43a43241ac11e782045e449,
objectReference: {fileID: 22100000, guid: a57d8865a12790c45a2b086303092833,
type: 2}
- target: {fileID: 5866666021909216657, guid: be1b0b5b139d39e48826848f6d198265,
type: 3}

View File

@ -17,10 +17,10 @@ public class ConfigCheck : EditorWindow
List<VehicleItem> vehicleItems;
[MenuItem("Test/prefab工具/角色及载具配置")]
[MenuItem("Test/prefab工具/角色及载具配置")]
public static void ShowEditor()
{
var win = GetWindow<ConfigCheck>("配置检查");
var win = GetWindow<ConfigCheck>("配置检查");
win.minSize = new Vector2(500, 700);
}
public void CreateGUI()
@ -69,8 +69,8 @@ public class ConfigCheck : EditorWindow
view.Add(playerPane);
view.Add(vehiclePane);
// 角色列表
Label playerLabe = new Label() { text = "CharacterDefault配置" };
// 角色列表
Label playerLabe = new Label() { text = "CharacterDefault配置" };
playerLabe.style.unityTextAlign = TextAnchor.MiddleCenter;
playerLabe.style.fontSize = 20;
playerLabe.style.color = Color.green;
@ -90,8 +90,8 @@ public class ConfigCheck : EditorWindow
};
playerListView.itemsSource = playerItems;
// 载具列表
Label vLabe = new Label() { text = "VehicleConfig配置" };
// 载具列表
Label vLabe = new Label() { text = "VehicleConfig配置" };
vLabe.style.unityTextAlign = TextAnchor.MiddleCenter;
vLabe.style.fontSize = 20;
vLabe.style.color = Color.green;
@ -164,39 +164,39 @@ public class PlayerItem
ani01_isDone = AssetDatabase.LoadAssetAtPath<GameObject>(path1);
//skinIsDone = asset.Find("Root/Bip001");
// 查找配置
// 查找配置
mainConfigIsDone = buildDataList.Any(a => a.mainConfig.NameID == id);
skinsConfigIsDone = buildDataList.Any(a => a.skins[1].NameID == skin01Name);
// 是否存在AutoGen文件夹, 判断是否已构建2个皮肤
string autoDir = $"Assets/Art/AutoGen/Characters/character_{id}/";
string autoDir1 = $"Assets/Art/AutoGen/Characters/character_{skin01Name}/";
// 是否存在AutoGen文件夹, 判断是否已构建2个皮肤
string autoDir = $"Assets/Art_Out/AutoGen/Characters/character_{id}/";
string autoDir1 = $"Assets/Art_Out/AutoGen/Characters/character_{skin01Name}/";
isBuild = AssetDatabase.IsValidFolder(autoDir1); // 只检查皮肤2
isBuild = AssetDatabase.IsValidFolder(autoDir1); // 只检查皮肤2
if (ani00_isDone) // 技能动画完成
if (ani00_isDone) // 技能动画完成
{
if (!mainConfigIsDone)
{
this.message = " 缺少mainConfig";
this.message = " 缺少mainConfig";
}
else
{
if (isBuild is false)
{
this.message = ani01_isDone ? "需要构建皮肤2" : "缺少技能动画2";
this.message = ani01_isDone ? "需要构建皮肤2" : "缺少技能动画2";
}
}
if (!skinsConfigIsDone && ani01_isDone)
{
this.message = this.message + $" 缺少{skin01Name}skinConfg";
this.message = this.message + $" 缺少{skin01Name}skinConfg";
}
}
else
{
this.message = "缺少技能动画1";
this.message = "缺少技能动画1";
}
}
}
@ -212,7 +212,7 @@ public class VehicleItem
{
this.id = vPrefab.name.Split('_')[1];
configIsDone = dataList.Any(a => a.vehicleConfig.ID.ToString() == id);
message = configIsDone ? "需要构建载具" : "缺少配置or未解锁";
message = configIsDone ? "需要构建载具" : "缺少配置or未解锁";
string path = $"Assets/Art/AutoGen/Vehicle/{id}";
isBuild = AssetDatabase.IsValidFolder(path);
}

View File

@ -86,7 +86,7 @@ namespace PersonBrowser
public PlayerInfo(string id)
{
m_Name = id;
// Player 初始值在Assets中获取可写。
// Player 初始值在Assets中获取可写。
try
{
string path = $"Assets/Art/Character/Prefabs/Players/P_{m_Name}.prefab";
@ -97,7 +97,7 @@ namespace PersonBrowser
Player = null;
}
// Skill 只在Assets中获取不可写。
// Skill 只在Assets中获取不可写。
try
{
string path = $"Assets/Art/Animations/Battle/Skill/ani_{m_Name}_skill01.fbx";
@ -108,7 +108,7 @@ namespace PersonBrowser
Skill = null;
}
// Player_S 只在Assets中获取不可写。
// Player_S 只在Assets中获取不可写。
try
{
string path = $"Assets/Art/Character/Prefabs/Players_S/P_S_{m_Name}.prefab";
@ -119,7 +119,7 @@ namespace PersonBrowser
Display = null;
}
// Player_S Animator Controller 只在Assets中获取不可写。
// Player_S Animator Controller 只在Assets中获取不可写。
try
{
Display_ac = Display.transform.GetChild(0).GetComponent<Animator>().runtimeAnimatorController;
@ -129,8 +129,8 @@ namespace PersonBrowser
Display_ac = null;
}
// AutoGen 只在Assets中获取不可写。
string directory = $"Assets/Art/AutoGen/Characters/character_{m_Name}/";
// AutoGen 只在Assets中获取不可写。
string directory = $"Assets/Art_Out/AutoGen/Characters/character_{m_Name}/";
if (AssetDatabase.IsValidFolder(directory))
{
try
@ -145,7 +145,7 @@ namespace PersonBrowser
}
try
{
string path = $"Assets/Art/AutoGen/Characters/character_{m_Name}/_MainTex.png";
string path = $"Assets/Art_Out/AutoGen/Characters/character_{m_Name}/_MainTex.png";
MainTex = AssetDatabase.LoadAssetAtPath<Texture2D>(path);
}
catch
@ -155,7 +155,7 @@ namespace PersonBrowser
}
else
{
// Debug.Log($"character_{m_Name} 路径不存在, 需要先构建角色");
// Debug.Log($"character_{m_Name} 路径不存在, 需要先构建角色");
AutoGen = null;
MainTex = null;
};
@ -165,7 +165,7 @@ namespace PersonBrowser
AniFile = null;
if (!System.IO.Directory.Exists($@"\\192.168.2.222\project_A"))
{
Debug.Log(@"无法链接:\\192.168.2.222\\project_A");
Debug.Log(@"无法链接:\\192.168.2.222\\project_A");
}
else
{
@ -176,16 +176,16 @@ namespace PersonBrowser
if (m_Name.StartsWith("AA"))
{
str = m_Name.Remove(3, 1).Insert(3, "0");
modelPath1 = $@"\\192.168.2.222\project_A\02_模型\Players\{str.Remove(0, 1)}\{m_Name}\{m_Name}.max";
modelPath2 = $@"\\192.168.2.222\project_A\02_模型\Players\{str.Remove(0, 1)}\{m_Name}.max";
skinPath = $@"\\192.168.2.222\project_A\03_动作\角色蒙皮\异格\{str}\{m_Name}\{m_Name}_skin.max";
modelPath1 = $@"\\192.168.2.222\project_A\02_模型\Players\{str.Remove(0, 1)}\{m_Name}\{m_Name}.max";
modelPath2 = $@"\\192.168.2.222\project_A\02_模型\Players\{str.Remove(0, 1)}\{m_Name}.max";
skinPath = $@"\\192.168.2.222\project_A\03_动作\角色蒙皮\异格\{str}\{m_Name}\{m_Name}_skin.max";
}
else
{
str = m_Name.Remove(2, 1).Insert(2, "0");
modelPath1 = $@"\\192.168.2.222\project_A\02_模型\Players\{str}\{m_Name}\{m_Name}.max";
modelPath2 = $@"\\192.168.2.222\project_A\02_模型\Players\{str}\{m_Name}.max";
skinPath = $@"\\192.168.2.222\project_A\03_动作\角色蒙皮\Player\{str}\{m_Name}\{m_Name}_skin.max";
modelPath1 = $@"\\192.168.2.222\project_A\02_模型\Players\{str}\{m_Name}\{m_Name}.max";
modelPath2 = $@"\\192.168.2.222\project_A\02_模型\Players\{str}\{m_Name}.max";
skinPath = $@"\\192.168.2.222\project_A\03_动作\角色蒙皮\Player\{str}\{m_Name}\{m_Name}_skin.max";
}
@ -200,17 +200,17 @@ namespace PersonBrowser
}
string aniPath = $@"\\192.168.2.222\project_A\03_动作\角色技能\max\{m_Name}_skill01.max";
string aniPath = $@"\\192.168.2.222\project_A\03_动作\角色技能\max\{m_Name}_skill01.max";
if (System.IO.File.Exists(aniPath))
{
AniFile = $"{m_Name}_skill01.max";
}
}
// 灰色:啥都没有
// 黄色:至少缺一项
// 绿色:齐全
// 红色:文件齐全但未构建角色
// 灰色:啥都没有
// 黄色:至少缺一项
// 绿色:齐全
// 红色:文件齐全但未构建角色
if (AniFile == null && ModelFile == null && SkinFile == null)
{
State = Color.gray;

View File

@ -12,11 +12,11 @@ public class ModifyPrefab : EditorWindow
{
private GameObject[] objs;
[MenuItem("Test/tools/修改 prefab")]
public static void ShowWindow() { GetWindow<ModifyPrefab>("修改 Prefab"); }
[MenuItem("Test/tools/<EFBFBD>޸<EFBFBD> prefab")]
public static void ShowWindow() { GetWindow<ModifyPrefab>("<EFBFBD>޸<EFBFBD> Prefab"); }
public void CreateGUI()
{
Button btn1 = new() { name = "button1", text = "修改 wind zone" };
Button btn1 = new() { name = "button1", text = "<EFBFBD>޸<EFBFBD> wind zone" };
rootVisualElement.Add(btn1);
btn1.RegisterCallback<ClickEvent>(ModifyPlayers);
@ -24,19 +24,19 @@ public class ModifyPrefab : EditorWindow
rootVisualElement.Add(btn3);
btn3.RegisterCallback<ClickEvent>(GetObjs);
Button btn2 = new() { name = "button2", text = "修改 auto gen prefab" };
Button btn2 = new() { name = "button2", text = "<EFBFBD>޸<EFBFBD> auto gen prefab" };
rootVisualElement.Add(btn2);
btn2.RegisterCallback<ClickEvent>(ModifyAutoGen);
Button btn4 = new() { name = "button4", text = "修改 角色 scale" };
Button btn4 = new() { name = "button4", text = "<EFBFBD>޸<EFBFBD> <20><>ɫ scale" };
rootVisualElement.Add(btn4);
btn4.RegisterCallback<ClickEvent>(ModifyScale);
Button btn5 = new() { name = "button5", text = "移除pos关键帧" };
Button btn5 = new() { name = "button5", text = "<EFBFBD>Ƴ<EFBFBD>pos<EFBFBD>ؼ<EFBFBD>֡" };
rootVisualElement.Add(btn5);
btn5.RegisterCallback<ClickEvent>(AnimOptimize);
Button btn6 = new() { name = "button6", text = "修改炮台朝向" };
Button btn6 = new() { name = "button6", text = "<EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>̨<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" };
rootVisualElement.Add(btn6);
btn6.RegisterCallback<ClickEvent>(ModifyBattery);
}
@ -47,7 +47,7 @@ public class ModifyPrefab : EditorWindow
GameObject[] objectArray = Selection.gameObjects;
foreach (GameObject obj in objectArray)
{
// 不实例化,直接修改资源,需要 Ctrl+S 手动保存
// <EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ Ctrl+S <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
var ins = obj.transform.GetChild(0);
try
{
@ -67,7 +67,7 @@ public class ModifyPrefab : EditorWindow
GameObject[] objectArray = Selection.gameObjects;
foreach (GameObject obj in objectArray)
{
// 不实例化,直接修改资源,需要 Ctrl+S 手动保存
// <EFBFBD><EFBFBD>ʵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD><EFBFBD><EFBFBD>޸<EFBFBD><EFBFBD><EFBFBD>Դ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ҫ Ctrl+S <20>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD>
obj.transform.GetChild(0).localScale = new Vector3(1.0f, 1.0f, 1.0f);
}
}
@ -79,7 +79,7 @@ public class ModifyPrefab : EditorWindow
void GetObjs(ClickEvent ent)
{
string[] subFloders = AssetDatabase.GetSubFolders("Assets/Art/AutoGen/Characters");
string[] subFloders = AssetDatabase.GetSubFolders("Assets/Art_Out/AutoGen/Characters");
string[] guids = AssetDatabase.FindAssets("character_A", subFloders);
List<GameObject> list = new List<GameObject>();
foreach (string guid in guids)
@ -135,13 +135,13 @@ public class ModifyPrefab : EditorWindow
Debug.Log(clip.name);
// 删除POS和缩放帧
// ɾ<EFBFBD><EFBFBD>POS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>֡
EditorCurveBinding[] curveBingdings = AnimationUtility.GetCurveBindings(clip);
foreach (var curveBingding in curveBingdings)
{
string name = curveBingding.propertyName.ToLower();
string bonePath = curveBingding.path;
// 删除POS需要排除质心武器挂点
// ɾ<EFBFBD><EFBFBD>POS<EFBFBD><EFBFBD>Ҫ<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD>
string[] fliter = new string[]{
"Root/Bip001",
"Root/Bip001/Bip001 Spine/Bip001 Spine1/Bip001 R Clavicle/Bip001 R UpperArm/Bip001 R Forearm/Bip001 R Hand/Grip_point01",
@ -157,7 +157,7 @@ public class ModifyPrefab : EditorWindow
}
}
// 浮点精度压缩
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѹ<EFBFBD><EFBFBD>
AnimationClipCurveData[] curves = null;
curves = AnimationUtility.GetAllCurves(clip);
Keyframe key;
@ -182,7 +182,7 @@ public class ModifyPrefab : EditorWindow
clip.SetCurve(curveDate.path, curveDate.type, curveDate.propertyName, curveDate.curve);
}
// 提取anim文件
// <EFBFBD><EFBFBD>ȡanim<EFBFBD>ļ<EFBFBD>
AnimationClip newClip = new AnimationClip();
EditorUtility.CopySerialized(clip, newClip);
string newAnimPath = "";

View File

@ -23,7 +23,7 @@ public class ShowAniTest : EditorWindow
public void CreateGUI()
{
startIdField = new TextField() { label = "起始prefab id:00001或01001" };
startIdField = new TextField() { label = "起始prefab id:00001或01001" };
rootVisualElement.Add(startIdField);
Button btn1 = new() { name = "button1", text = "add prefab to point" };
@ -50,7 +50,7 @@ public class ShowAniTest : EditorWindow
prefabList = new();
if (startIdField.value.Length != 5)
{
Debug.Log("请输入正确id");
Debug.Log("请输入正确id");
return;
}
int id = Convert.ToInt32(startIdField.value);
@ -60,7 +60,7 @@ public class ShowAniTest : EditorWindow
Transform point = points.transform.Find($"Point{n}");
n++;
string idName = i.ToString().PadLeft(5, '0');
string[] guids = AssetDatabase.FindAssets($"t:GameObject", new string[] { $"Assets/Art/AutoGen/Characters/character_A{idName}/" });
string[] guids = AssetDatabase.FindAssets($"t:GameObject", new string[] { $"Assets/Art_Out/AutoGen/Characters/character_A{idName}/" });
if (guids.Length != 0)
{
string path = AssetDatabase.GUIDToAssetPath(guids[0]);
@ -80,14 +80,14 @@ public class ShowAniTest : EditorWindow
public void ChangAni(ClickEvent evt)
{
stateCount = (stateCount + 1) % stateNames.Length;
Debug.Log($"切换动作:{stateCount}");
Debug.Log($"切换动作:{stateCount}");
string nextStateName = stateNames[stateCount];
foreach (GameObject item in prefabList)
{
Transform assetTransform = item.transform.GetChild(0);
Animator animator = assetTransform.GetComponent<Animator>();
// 查询动作模组
// 查询动作模组
string assetName = "";
assetName = assetTransform.name.Remove(2, 1);
assetName = assetName.Insert(2, "0");
@ -108,12 +108,12 @@ public class ShowAniTest : EditorWindow
Transform assetTransform = item.transform.GetChild(0);
Animator animator = assetTransform.GetComponent<Animator>();
// 查询动作模组
// 查询动作模组
string assetName = "";
assetName = assetTransform.name.Remove(2, 1);
assetName = assetName.Insert(2, "0");
string aniSet = persons.First(item => item.id == assetName).aniSet;
string acPath = $"Assets/Art/AutoGen/Characters/character_{assetName}/ov_{assetName}_{aniSet}.overrideController";
string acPath = $"Assets/Art_Out/AutoGen/Characters/character_{assetName}/ov_{assetName}_{aniSet}.overrideController";
// config animator controller
var rac = AssetDatabase.LoadAssetAtPath<RuntimeAnimatorController>(acPath);

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 94bead32ec828f649994d85eafa76585
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2fcee0c6d897fa34ea2bf9f52a815b40
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More