diff options
Diffstat (limited to 'Assets/Scripts')
-rw-r--r-- | Assets/Scripts/Unit/Controller/UnitController.cs | 4 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs | 5 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs.meta (renamed from Assets/Scripts/Unit/UnitParts.cs.meta) | 2 | ||||
-rw-r--r-- | Assets/Scripts/Unit/Events/EventEffect.cs | 6 | ||||
-rw-r--r-- | Assets/Scripts/Unit/TimelineEventProxy.cs | 2 | ||||
-rw-r--r-- | Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs | 15 | ||||
-rw-r--r-- | Assets/Scripts/Unit/UnitDetail.cs | 117 | ||||
-rw-r--r-- | Assets/Scripts/Unit/UnitDetail.cs.meta | 11 | ||||
-rw-r--r-- | Assets/Scripts/Unit/UnitParts.cs | 22 |
9 files changed, 155 insertions, 29 deletions
diff --git a/Assets/Scripts/Unit/Controller/UnitController.cs b/Assets/Scripts/Unit/Controller/UnitController.cs index 384299de..3c09e5e6 100644 --- a/Assets/Scripts/Unit/Controller/UnitController.cs +++ b/Assets/Scripts/Unit/Controller/UnitController.cs @@ -39,7 +39,7 @@ public class UnitController : MonoBehaviour/*, Interactable*/ public UnitCollider unitCollider;
- public UnitParts unitParts;
+ public UnitDetail unitDetail;
public GameObject unitObj; // 角色模型
@@ -121,7 +121,7 @@ public class UnitController : MonoBehaviour/*, Interactable*/ unitCollider = gameObject.GetOrAddComponent<UnitCollider>();
unitCollider.Initialize();
- unitParts = gameObject.GetComponentInChildren<UnitParts>();
+ unitDetail = gameObject.GetComponentInChildren<UnitDetail>();
}
public virtual void Update()
diff --git a/Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs b/Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs new file mode 100644 index 00000000..d56c9f36 --- /dev/null +++ b/Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs @@ -0,0 +1,5 @@ +using UnityEditor; + +[CustomPropertyDrawer(typeof(UnitBoneDictionary))] +public class UnitBoneDictionaryDrawer : SerializableDictionaryPropertyDrawer { } + diff --git a/Assets/Scripts/Unit/UnitParts.cs.meta b/Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs.meta index c95d5fdb..4a92e024 100644 --- a/Assets/Scripts/Unit/UnitParts.cs.meta +++ b/Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 19d4fad3ce933bf45a32ff4d0d7e328a +guid: 8850261fe4c29b442a0e3b613e07597e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Unit/Events/EventEffect.cs b/Assets/Scripts/Unit/Events/EventEffect.cs index 347b92f5..1369e7b0 100644 --- a/Assets/Scripts/Unit/Events/EventEffect.cs +++ b/Assets/Scripts/Unit/Events/EventEffect.cs @@ -6,6 +6,7 @@ public class EventEffect : AnimationEventBase {
Unit,
Bone,
+ PresetBone,
}
public override TimelineEventProxy.EEventType type { get { return TimelineEventProxy.EEventType.EventEffect; } }
@@ -21,7 +22,10 @@ public class EventEffect : AnimationEventBase public EAttachNode attachNode = EAttachNode.Unit;
[When("attachNode", EAttachNode.Bone), Tooltip("Bone path attach to")]
- public string bone;
+ public string bonePath;
+
+ [When("attachNode", EAttachNode.PresetBone), Tooltip("Preset unit bone defined in unit details")]
+ public EUnitBone bone;
[Tooltip("Position offset")]
public Vector3 position;
diff --git a/Assets/Scripts/Unit/TimelineEventProxy.cs b/Assets/Scripts/Unit/TimelineEventProxy.cs index de6e6b0b..70e454ba 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy.cs @@ -81,7 +81,7 @@ public partial class TimelineEventProxy private Transform m_Root; - private Transform m_UnitModel; // 模型的Unit,默认是m_Root的第一个子节点 + private Transform m_UnitModel; // 模型的Unit prefab,默认是m_Root的第一个子节点 public UnitController owner { get; private set; }
diff --git a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs index 119cf105..adc4fe3e 100644 --- a/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs +++ b/Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs @@ -41,7 +41,18 @@ public partial class TimelineEventProxy { if (m_UnitModel != null) { - info.rootTr = m_UnitModel.Find(effect.bone); + info.rootTr = m_UnitModel.Find(effect.bonePath); + } + } + else if(effect.attachNode == global::EventEffect.EAttachNode.PresetBone) + { + if(m_UnitModel != null) + { + UnitDetail detail = m_UnitModel.GetComponent<UnitDetail>(); + if(detail) + { + info.rootTr = detail.GetBone(effect.bone); + } } } } @@ -122,7 +133,7 @@ public partial class TimelineEventProxy EventMesh_AfterImage afterImage = animEvent as EventMesh_AfterImage; if (afterImage == null) return; - string avatarPath = owner.unitParts.afterImageAvatarPath; + string avatarPath = owner.unitDetail.afterImageAvatarPath; GameObject go = ResourceManager.Instance.LoadAsset<GameObject>(avatarPath); if (go) { diff --git a/Assets/Scripts/Unit/UnitDetail.cs b/Assets/Scripts/Unit/UnitDetail.cs new file mode 100644 index 00000000..30a98c63 --- /dev/null +++ b/Assets/Scripts/Unit/UnitDetail.cs @@ -0,0 +1,117 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public enum EUnitBone +{ + Hips = 0, // 盆骨 + Spine , // 脊柱 + Chest , // 胸腔 + UpperChest , // + Neck , + Head , + LEye , + REye , + Jaw , + + LShoulder = 20, + LUpperArm, + LLowerArm, + LHand, + LFinger00, + LFinger01, + LFinger02, + LFinger10, + LFinger11, + LFinger12, + LFinger20, + LFinger21, + LFinger22, + LFinger30, + LFinger31, + LFinger32, + LFinger40, + LFinger41, + LFinger42, + + RShoulder = 40, + RUpperArm, + RLowerArm, + RHand, + RFinger00, + RFinger01, + RFinger02, + RFinger10, + RFinger11, + RFinger12, + RFinger20, + RFinger21, + RFinger22, + RFinger30, + RFinger31, + RFinger32, + RFinger40, + RFinger41, + RFinger42, + + LUpperLeg = 60, // 大腿 + LLowerLeg, // 小腿肚 + LFoot, // 左脚 + LToes, // 脚趾 + LToe0, // 脚趾0 + LToe1, // 脚趾1 + LToe2, // 脚趾2 + LToe3, // 脚趾3 + LToe4, // 脚趾4 + + RUpperLeg = 80, // 大腿 + RLowerLeg, // 小腿肚 + RFoot, // 左脚 + RToes, // 脚趾 + RToe0, // 脚趾0 + RToe1, // 脚趾1 + RToe2, // 脚趾2 + RToe3, // 脚趾3 + RToe4, // 脚趾4 + +} + +[Serializable] +public class UnitBoneDictionary : SerializableDictionary<EUnitBone, Transform> { } + +// 角色的prefab附加数据 +// * afterimage的prefab +// * 骨骼映射 +// * 武器 +[DisallowMultipleComponent] +public class UnitDetail : MonoBehaviour +{ + [Tooltip("残影用的prefab")] + public string afterImageAvatarPath; + + public UnitBoneDictionary bones; + + //[ExecuteInEditMode] + public UnitDetail() + { + bones = new UnitBoneDictionary(); + foreach(EUnitBone e in Enum.GetValues(typeof(EUnitBone))) + { + bones.Add(e, null); + } + } + + public Transform GetBone(EUnitBone bone) + { + if (bones.ContainsKey(bone)) + return bones[bone]; + return null; + } + + public bool HasBone(EUnitBone bone) + { + return bones.ContainsKey(bone); + } + +}
\ No newline at end of file diff --git a/Assets/Scripts/Unit/UnitDetail.cs.meta b/Assets/Scripts/Unit/UnitDetail.cs.meta new file mode 100644 index 00000000..f004ea18 --- /dev/null +++ b/Assets/Scripts/Unit/UnitDetail.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 75a2e2ebdc58ab940858d821f8a1ffa0 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Unit/UnitParts.cs b/Assets/Scripts/Unit/UnitParts.cs deleted file mode 100644 index 88c9cb23..00000000 --- a/Assets/Scripts/Unit/UnitParts.cs +++ /dev/null @@ -1,22 +0,0 @@ -using System.Collections;
-using System.Collections.Generic;
-using UnityEngine;
-
-// 部件
-[DisallowMultipleComponent]
-public class UnitParts : MonoBehaviour
-{
- public enum EUnitPart
- {
- Sword = 1,
- Gun = 2,
- LHand = 3,
- RHand = 4,
- }
-
- [Tooltip("残影用的prefab")]
- public string afterImageAvatarPath;
-
-
-
-}
|