qianzhuqing 3 years ago
parent
commit
d6c5c4d2cb
29 changed files with 699 additions and 1335 deletions
  1. BIN
      Assets/GameMain/DataTables/CustomBody.bytes
  2. 7 0
      Assets/GameMain/DataTables/CustomBody.bytes.meta
  3. BIN
      Assets/GameMain/DataTables/CustomBody.txt
  4. 2 1
      Assets/GameMain/DataTables/Scene.bytes
  5. BIN
      Assets/GameMain/DataTables/UIForm.bytes
  6. 1 1
      Assets/GameMain/Scenes/CustomRole.unity
  7. 1 1
      Assets/GameMain/Scripts/DataTable/DRAircraft.cs
  8. 1 1
      Assets/GameMain/Scripts/DataTable/DRArmor.cs
  9. 1 1
      Assets/GameMain/Scripts/DataTable/DRAsteroid.cs
  10. 228 0
      Assets/GameMain/Scripts/DataTable/DRCustomBody.cs
  11. 11 0
      Assets/GameMain/Scripts/DataTable/DRCustomBody.cs.meta
  12. 1 1
      Assets/GameMain/Scripts/DataTable/DREntity.cs
  13. 1 1
      Assets/GameMain/Scripts/DataTable/DRMusic.cs
  14. 1 1
      Assets/GameMain/Scripts/DataTable/DRScene.cs
  15. 1 1
      Assets/GameMain/Scripts/DataTable/DRSound.cs
  16. 1 1
      Assets/GameMain/Scripts/DataTable/DRThruster.cs
  17. 1 1
      Assets/GameMain/Scripts/DataTable/DRUIForm.cs
  18. 1 1
      Assets/GameMain/Scripts/DataTable/DRUISound.cs
  19. 1 1
      Assets/GameMain/Scripts/DataTable/DRWeapon.cs
  20. 6 3
      Assets/GameMain/Scripts/Entity/EntityData/RoleCustomBoneData.cs
  21. 2 2
      Assets/GameMain/Scripts/Event/CustomRoleBodyEventArgs.cs
  22. 10 6
      Assets/GameMain/Scripts/Game/CustomRole/CustomManager.cs
  23. 4 4
      Assets/GameMain/Scripts/Procedure/ProcedureChangeScene.cs
  24. 1 0
      Assets/GameMain/Scripts/Procedure/ProcedurePreload.cs
  25. 24 21
      Assets/GameMain/Scripts/UI/CustomRoleForm.cs
  26. 27 0
      Assets/GameMain/Scripts/UI/CustomRoleListCell.cs
  27. 11 0
      Assets/GameMain/Scripts/UI/CustomRoleListCell.cs.meta
  28. 110 2
      Assets/GameMain/Scripts/Utility/CustomRoleUtility.cs
  29. 244 1284
      Assets/GameMain/UI/UIForms/CustomRoleForm.prefab

BIN
Assets/GameMain/DataTables/CustomBody.bytes


+ 7 - 0
Assets/GameMain/DataTables/CustomBody.bytes.meta

@@ -0,0 +1,7 @@
+fileFormatVersion: 2
+guid: 472db803d5930dd429398f2b1577a5e8
+TextScriptImporter:
+  externalObjects: {}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

BIN
Assets/GameMain/DataTables/CustomBody.txt


+ 2 - 1
Assets/GameMain/DataTables/Scene.bytes

@@ -1 +1,2 @@
-MenuMain
+MenuMain

+CustomRole

BIN
Assets/GameMain/DataTables/UIForm.bytes


+ 1 - 1
Assets/GameMain/Scenes/CustomRole.unity

@@ -736,7 +736,7 @@ Transform:
   m_PrefabAsset: {fileID: 0}
   m_GameObject: {fileID: 461674368}
   m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
-  m_LocalPosition: {x: 0, y: 0, z: -5}
+  m_LocalPosition: {x: 0, y: -0.24, z: -5}
   m_LocalScale: {x: 1, y: 1, z: 1}
   m_Children: []
   m_Father: {fileID: 0}

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRAircraft.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.517
+// 生成时间:2022-01-20 10:11:25.870
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRArmor.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.539
+// 生成时间:2022-01-20 10:11:25.882
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRAsteroid.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.557
+// 生成时间:2022-01-20 10:11:25.884
 //------------------------------------------------------------
 
 using GameFramework;

+ 228 - 0
Assets/GameMain/Scripts/DataTable/DRCustomBody.cs

@@ -0,0 +1,228 @@
+//------------------------------------------------------------
+// Game Framework
+// Copyright © 2013-2021 Jiang Yin. All rights reserved.
+// Homepage: https://gameframework.cn/
+// Feedback: mailto:ellan@gameframework.cn
+//------------------------------------------------------------
+// 此文件由工具自动生成,请勿直接修改。
+// 生成时间:2022-01-20 10:11:25.912
+//------------------------------------------------------------
+
+using GameFramework;
+using System;
+using System.Collections.Generic;
+using System.IO;
+using System.Text;
+using UnityEngine;
+using UnityGameFramework.Runtime;
+
+namespace MetaClient
+{
+    /// <summary>
+    /// 自定义身体。
+    /// </summary>
+    public class DRCustomBody : DataRowBase
+    {
+        private int m_Id = 0;
+
+        /// <summary>
+        /// 获取id。
+        /// </summary>
+        public override int Id
+        {
+            get
+            {
+                return m_Id;
+            }
+        }
+
+        /// <summary>
+        /// 获取名称。
+        /// </summary>
+        public string Name
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取层级。
+        /// </summary>
+        public int Cengji
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取是否显示。
+        /// </summary>
+        public int IsActive
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取图片Icon。
+        /// </summary>
+        public string Icon
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取按钮类型。
+        /// </summary>
+        public int ButtonStyple
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取是否传输内容。
+        /// </summary>
+        public int IsSendContent
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取传输对应类型。
+        /// </summary>
+        public int SendContent
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取接收到的对应数据。
+        /// </summary>
+        public int Receive
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取对应身体部位。
+        /// </summary>
+        public int Part
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取是否保持子物体缩放。
+        /// </summary>
+        public bool IsKeepChildrenScale
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取是否左右一样。
+        /// </summary>
+        public bool IsMirror
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取缩放最小值。
+        /// </summary>
+        public float ScaleRangeMin
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取缩放最大值。
+        /// </summary>
+        public float ScaleRangeMax
+        {
+            get;
+            private set;
+        }
+
+        /// <summary>
+        /// 获取缩放类型。
+        /// </summary>
+        public int ModifyType
+        {
+            get;
+            private set;
+        }
+
+        public override bool ParseDataRow(string dataRowString, object userData)
+        {
+            string[] columnStrings = dataRowString.Split(DataTableExtension.DataSplitSeparators);
+            for (int i = 0; i < columnStrings.Length; i++)
+            {
+                columnStrings[i] = columnStrings[i].Trim(DataTableExtension.DataTrimSeparators);
+            }
+
+            int index = 0;
+            index++;
+            m_Id = int.Parse(columnStrings[index++]);
+            Name = columnStrings[index++];
+            Cengji = int.Parse(columnStrings[index++]);
+            IsActive = int.Parse(columnStrings[index++]);
+            Icon = columnStrings[index++];
+            ButtonStyple = int.Parse(columnStrings[index++]);
+            IsSendContent = int.Parse(columnStrings[index++]);
+            SendContent = int.Parse(columnStrings[index++]);
+            Receive = int.Parse(columnStrings[index++]);
+            Part = int.Parse(columnStrings[index++]);
+            IsKeepChildrenScale = bool.Parse(columnStrings[index++]);
+            IsMirror = bool.Parse(columnStrings[index++]);
+            ScaleRangeMin = float.Parse(columnStrings[index++]);
+            ScaleRangeMax = float.Parse(columnStrings[index++]);
+            ModifyType = int.Parse(columnStrings[index++]);
+
+            GeneratePropertyArray();
+            return true;
+        }
+
+        public override bool ParseDataRow(byte[] dataRowBytes, int startIndex, int length, object userData)
+        {
+            using (MemoryStream memoryStream = new MemoryStream(dataRowBytes, startIndex, length, false))
+            {
+                using (BinaryReader binaryReader = new BinaryReader(memoryStream, Encoding.UTF8))
+                {
+                    m_Id = binaryReader.Read7BitEncodedInt32();
+                    Name = binaryReader.ReadString();
+                    Cengji = binaryReader.Read7BitEncodedInt32();
+                    IsActive = binaryReader.Read7BitEncodedInt32();
+                    Icon = binaryReader.ReadString();
+                    ButtonStyple = binaryReader.Read7BitEncodedInt32();
+                    IsSendContent = binaryReader.Read7BitEncodedInt32();
+                    SendContent = binaryReader.Read7BitEncodedInt32();
+                    Receive = binaryReader.Read7BitEncodedInt32();
+                    Part = binaryReader.Read7BitEncodedInt32();
+                    IsKeepChildrenScale = binaryReader.ReadBoolean();
+                    IsMirror = binaryReader.ReadBoolean();
+                    ScaleRangeMin = binaryReader.ReadSingle();
+                    ScaleRangeMax = binaryReader.ReadSingle();
+                    ModifyType = binaryReader.Read7BitEncodedInt32();
+                }
+            }
+
+            GeneratePropertyArray();
+            return true;
+        }
+
+        private void GeneratePropertyArray()
+        {
+
+        }
+    }
+}

+ 11 - 0
Assets/GameMain/Scripts/DataTable/DRCustomBody.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 56faf83de674bbb4e8c0da4d8cff218c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DREntity.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.576
+// 生成时间:2022-01-20 10:11:25.891
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRMusic.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.591
+// 生成时间:2022-01-20 10:11:25.893
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRScene.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.610
+// 生成时间:2022-01-20 10:11:25.895
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRSound.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.625
+// 生成时间:2022-01-20 10:11:25.898
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRThruster.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.638
+// 生成时间:2022-01-20 10:11:25.900
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRUIForm.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.652
+// 生成时间:2022-01-20 10:11:25.902
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRUISound.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.666
+// 生成时间:2022-01-20 10:11:25.904
 //------------------------------------------------------------
 
 using GameFramework;

+ 1 - 1
Assets/GameMain/Scripts/DataTable/DRWeapon.cs

@@ -5,7 +5,7 @@
 // Feedback: mailto:ellan@gameframework.cn
 //------------------------------------------------------------
 // 此文件由工具自动生成,请勿直接修改。
-// 生成时间:2021-06-16 21:54:35.680
+// 生成时间:2022-01-20 10:11:25.907
 //------------------------------------------------------------
 
 using GameFramework;

+ 6 - 3
Assets/GameMain/Scripts/Entity/EntityData/RoleCustomBoneData.cs

@@ -24,6 +24,8 @@ namespace MetaClient
 
     public class PartData
     {
+        public int id;
+
         public EditableBodyPart part;
 
         public ModifyType modifyType;
@@ -34,10 +36,11 @@ namespace MetaClient
 
         public string pathValue;
 
-        public PartData(EditableBodyPart p, ModifyType type)
+        public PartData(int _id,EditableBodyPart _part, ModifyType _modifyType)
         {
-            part = p;
-            modifyType = type;
+            id = _id;
+            part = _part;
+            modifyType = _modifyType;
             floatValue = 1;
             vecValue = Vector3.zero;
             pathValue = "";

+ 2 - 2
Assets/GameMain/Scripts/Event/CustomRoleBodyEventArgs.cs

@@ -28,10 +28,10 @@ namespace MetaClient
             }
         }
 
-        public EditableBodyPart Part { get; set; }
+        public int Part { get; set; }
         public Vector3 ChangeValue { get; set; }
 
-        public static CustomRoleBodyEventArgs Create(EditableBodyPart part, Vector3 value)
+        public static CustomRoleBodyEventArgs Create(int part, Vector3 value)
         {
             CustomRoleBodyEventArgs customRoleFaceEvent = ReferencePool.Acquire<CustomRoleBodyEventArgs>();
             customRoleFaceEvent.Part = part;

+ 10 - 6
Assets/GameMain/Scripts/Game/CustomRole/CustomManager.cs

@@ -4,6 +4,7 @@ using System.Collections.Generic;
 using GameFramework.Event;
 using UnityEngine;
 using HumanoidEditor;
+using GameFramework.DataTable;
 
 namespace MetaClient
 {
@@ -27,9 +28,12 @@ namespace MetaClient
             testPlayer = GameObject.Find("biaozhunnv").GetComponent<CustomRoleController>();
 
             bodyData = new RoleCustomData();
-            for (int i = 0; i < 6; i++)
+            //初始化
+            IDataTable<DRCustomBody> drCB = GameEntry.DataTable.GetDataTable<DRCustomBody>();
+            DRCustomBody[] dtCB = drCB.GetAllDataRows();
+            for (int i = 0; i < dtCB.Length; i++)
             {
-                bodyData.bodyList.Add(i, new PartData((EditableBodyPart)i, ModifyType.LengthWidthThick));
+                bodyData.bodyList.Add(i, new PartData(dtCB[i].Id,(EditableBodyPart)dtCB[i].Part, (ModifyType)dtCB[i].ModifyType));
             }
 
             //初始缩放
@@ -57,17 +61,17 @@ namespace MetaClient
             CustomRoleBodyEventArgs crf = (CustomRoleBodyEventArgs)e;
             if (crf != null)
             {
-                bodyData.bodyList[(int)crf.Part].floatValue = 1 + (crf.ChangeValue.x - 0.5f) * valueFloating;
+                bodyData.bodyList[crf.Part].floatValue = 1 + (crf.ChangeValue.x - 0.5f) * valueFloating;
                 if (testPlayer != null)
                 {
-                    testPlayer.UpdateBoneScale(crf.Part, bodyData.bodyList[(int)crf.Part].floatValue);
+                    testPlayer.UpdateBoneScale((EditableBodyPart)crf.Part, bodyData.bodyList[crf.Part].floatValue);
                 }
             }
         }
 
-        public float GetBodyBoneValue(EditableBodyPart part)
+        public float GetBodyBoneValue(int id)
         {
-            return 0.5f + (bodyData.bodyList[(int)part].floatValue - 1) / valueFloating;
+            return 0.5f + (bodyData.bodyList[id].floatValue - 1) / valueFloating;
         }
         /// <summary>
         /// 重置角色数据

+ 4 - 4
Assets/GameMain/Scripts/Procedure/ProcedureChangeScene.cs

@@ -119,10 +119,10 @@ namespace MetaClient
 
             Log.Info("Load scene '{0}' OK.", ne.SceneAssetName);
 
-            if (m_BackgroundMusicId > 0)
-            {
-                GameEntry.Sound.PlayMusic(m_BackgroundMusicId);
-            }
+            //if (m_BackgroundMusicId > 0)
+            //{
+            //    GameEntry.Sound.PlayMusic(m_BackgroundMusicId);
+            //}
 
             m_IsChangeSceneComplete = true;
         }

+ 1 - 0
Assets/GameMain/Scripts/Procedure/ProcedurePreload.cs

@@ -30,6 +30,7 @@ namespace MetaClient
             "UIForm",
             "UISound",
             "Weapon",
+            "CustomBody",
         };
 
         private Dictionary<string, bool> m_LoadedFlag = new Dictionary<string, bool>();

+ 24 - 21
Assets/GameMain/Scripts/UI/CustomRoleForm.cs

@@ -10,6 +10,7 @@ using UnityEngine;
 using UnityEngine.UI;
 using UnityGameFramework.Runtime;
 using DG.Tweening;
+using GameFramework.DataTable;
 
 namespace MetaClient
 {
@@ -20,11 +21,15 @@ namespace MetaClient
         public Slider curSlider;
         public Button[] btnList;
         public GameObject point;
-        private EditableBodyPart curSelect = EditableBodyPart.None;
+
+        public RectTransform listContent;
+        public GameObject listgo;
 
         private List<Transform> bonesTrans = new List<Transform>();
         private List<GameObject> pointList = new List<GameObject>();
 
+        private DRCustomBody selectData = null;
+
 #if UNITY_2017_3_OR_NEWER
         protected override void OnOpen(object userData)
 #else
@@ -33,7 +38,14 @@ namespace MetaClient
         {
             base.OnOpen(userData);
 
-            RefreshBtn();
+            //初始化
+            IDataTable<DRCustomBody> drCB = GameEntry.DataTable.GetDataTable<DRCustomBody>();
+            DRCustomBody[] dtCB = drCB.GetAllDataRows();
+            for (int i = 0; i < dtCB.Length; i++)
+            {
+                var go = Instantiate(listgo, listContent);
+                go.GetComponent<CustomRoleListCell>().Init(dtCB[i],this);
+            }
 
             bonesTrans = CustomManager.Instance.testPlayer.GetBonesTrans();
             for (int i = 0; i < bonesTrans.Count; i++)
@@ -51,16 +63,7 @@ namespace MetaClient
 
         private void Start()
         {
-            RefreshBtn();
-        }
 
-        private void RefreshBtn()
-        {
-            for (int i = 0; i < btnList.Length; i++)
-            {
-                var btn = btnList[i];
-                btn.GetComponentInChildren<Text>().text = ((EditableBodyPart)i).ToString();
-            }
         }
 
 #if UNITY_2017_3_OR_NEWER
@@ -72,12 +75,6 @@ namespace MetaClient
             base.OnClose(isShutdown, userData);
         }
 
-        public void ClickFaceChangeBtn(int part)
-        {
-            curSelect = (EditableBodyPart)part;
-            RefreshSliderValue();
-        }
-
         public void Update()
         {
             UpdateCustomBodyBoneTransShow();
@@ -85,18 +82,18 @@ namespace MetaClient
 
         private void RefreshSliderValue()
         {
-            curShow.text = curSelect.ToString();
-            curSlider.value = CustomManager.Instance.GetBodyBoneValue(curSelect);
+            curShow.text = selectData.Name;
+            curSlider.value = CustomManager.Instance.GetBodyBoneValue(selectData.Id);
         }
 
         public void OnSliderValueChange(float value)
         {
-            if(curSelect == EditableBodyPart.None)
+            if(selectData == null || selectData.Part == (int)EditableBodyPart.None)
             {
                 return;
             }
             
-            GameEntry.Event.Fire(this, CustomRoleBodyEventArgs.Create(curSelect, new Vector3(value, 0, 0)));
+            GameEntry.Event.Fire(this, CustomRoleBodyEventArgs.Create(selectData.Id, new Vector3(value, 0, 0)));
         }
 
         private void UpdateCustomBodyBoneTransShow()
@@ -109,6 +106,12 @@ namespace MetaClient
             }
         }
 
+        public void ClickListCell(DRCustomBody select)
+        {
+            selectData = select;
+            RefreshSliderValue();
+        }
+
         public void ClickReset()
         {
             CustomManager.Instance.ResetRole();

+ 27 - 0
Assets/GameMain/Scripts/UI/CustomRoleListCell.cs

@@ -0,0 +1,27 @@
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace MetaClient
+{
+    public class CustomRoleListCell : MonoBehaviour
+    {
+        public Text Message;
+        private DRCustomBody bodyData;
+        private CustomRoleForm form;
+
+        public void Init(DRCustomBody _data,CustomRoleForm _form)
+        {
+            bodyData = _data;
+            form = _form;
+            Message.text = bodyData.Name;
+
+            var btn = GetComponent<Button>();
+            btn.onClick.AddListener(() => 
+            {
+                form.ClickListCell(bodyData);
+            });
+        }
+    }
+}

+ 11 - 0
Assets/GameMain/Scripts/UI/CustomRoleListCell.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 5269aeb8967c00849b92c75ddd42156c
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 110 - 2
Assets/GameMain/Scripts/Utility/CustomRoleUtility.cs

@@ -40,7 +40,14 @@ public enum EditableBodyPart
     LowerLegUp = 17,
     LowerLegDown = 18,
     Head = 19,
-    None = 20,
+    Acromion = 20,//肩峰
+    Waist = 21,//腰
+    Wrist = 22,//手腕
+    Crotch = 23,//胯部
+    Hips = 24,//臀部
+    Knee = 25,//膝盖
+    Ankle = 26,//脚腕
+    None = 27,
 }
 /// <summary>
 /// 编辑类型
@@ -65,13 +72,13 @@ public static class CustomRoleUtility
         Transform transR = null;
         Vector3 beforeScale = Vector3.one;
         List<Transform> childList = new List<Transform>();
+        
         bool keepChildWorldScale = false;
         switch (part)
         {
             case EditableBodyPart.UpperArm:
                 transL = ani.GetBoneTransform(HumanBodyBones.LeftUpperArm);
                 transR = ani.GetBoneTransform(HumanBodyBones.RightUpperArm);
-                keepChildWorldScale = true;
                 break;
             case EditableBodyPart.LowerArm:
                 transL = ani.GetBoneTransform(HumanBodyBones.LeftLowerArm);
@@ -142,6 +149,107 @@ public static class CustomRoleUtility
         }
     }
 
+    public static Transform[] GetRelativeTransform(Animator ani,EditableBodyPart part)
+    {
+        Transform[] result = null;
+        switch (part)
+        {
+            case EditableBodyPart.UpperArm:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftUpperArm);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightUpperArm);
+                break;
+            case EditableBodyPart.LowerArm:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftLowerArm);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightLowerArm);
+                break;
+            case EditableBodyPart.Hand:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftHand);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightHand);
+                break;
+            case EditableBodyPart.UpperLeg:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftUpperLeg);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightUpperLeg);
+                break;
+            case EditableBodyPart.LowerLeg:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftLowerLeg);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightLowerLeg);
+                break;
+            case EditableBodyPart.Foot:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftFoot);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightFoot);
+                break;
+            case EditableBodyPart.All:
+                result = new Transform[1];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.Spine);
+                break;
+            case EditableBodyPart.Neck:
+                result = new Transform[1];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.Neck);
+                break;
+            case EditableBodyPart.Clavicle:
+                result = new Transform[1];
+                //result[0] = ani.GetBoneTransform(HumanBodyBones.cl);
+                break;
+            case EditableBodyPart.Shoulder:
+                result = new Transform[2];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.LeftShoulder);
+                result[1] = ani.GetBoneTransform(HumanBodyBones.RightShoulder);
+                break;
+            case EditableBodyPart.Chest:
+                result = new Transform[2];
+                var p = ani.GetBoneTransform(HumanBodyBones.Chest);
+                result[0] = GetChild(p, "Chest_L");
+                result[1] = GetChild(p, "Chest_R");
+                break;
+            case EditableBodyPart.Pleural:
+                break;
+            case EditableBodyPart.Belly:
+                break;
+            case EditableBodyPart.UpperArmUp:
+                break;
+            case EditableBodyPart.UpperArmDown:
+                break;
+            case EditableBodyPart.UpperLegUp:
+                break;
+            case EditableBodyPart.UpperLegDown:
+                break;
+            case EditableBodyPart.LowerLegUp:
+                break;
+            case EditableBodyPart.LowerLegDown:
+                break;
+            case EditableBodyPart.Head:
+                result = new Transform[1];
+                result[0] = ani.GetBoneTransform(HumanBodyBones.Head);
+                break;
+            case EditableBodyPart.Acromion:
+                break;
+            case EditableBodyPart.Waist:
+                break;
+            case EditableBodyPart.Wrist:
+                break;
+            case EditableBodyPart.Crotch:
+                break;
+            case EditableBodyPart.Hips:
+                break;
+            case EditableBodyPart.Knee:
+                break;
+            case EditableBodyPart.Ankle:
+                break;
+            case EditableBodyPart.None:
+                break;
+            default:
+                break;
+        }
+
+        return result;
+    }
+
     public static void GetNormalAniBonesScale(Animator ani,ref Dictionary<string, Vector3> boneDic)
     {
         for (int i = 0; i < Enum.GetValues(typeof(HumanBodyBones)).Length - 1; i++)

File diff suppressed because it is too large
+ 244 - 1284
Assets/GameMain/UI/UIForms/CustomRoleForm.prefab