summaryrefslogtreecommitdiff
path: root/Assets/Scripts
diff options
context:
space:
mode:
Diffstat (limited to 'Assets/Scripts')
-rw-r--r--Assets/Scripts/Unit/Controller/UnitController.cs4
-rw-r--r--Assets/Scripts/Unit/Editor/UnitDictionariesDrawer.cs5
-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.cs6
-rw-r--r--Assets/Scripts/Unit/TimelineEventProxy.cs2
-rw-r--r--Assets/Scripts/Unit/TimelineEventProxy_Handlers.cs15
-rw-r--r--Assets/Scripts/Unit/UnitDetail.cs117
-rw-r--r--Assets/Scripts/Unit/UnitDetail.cs.meta11
-rw-r--r--Assets/Scripts/Unit/UnitParts.cs22
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;
-
-
-
-}