summaryrefslogtreecommitdiff
path: root/Assets/Scripts/Unit/UnitDetail.cs
blob: 30a98c63626f81ff7a5d95d7148b9faa97ac78b9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
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);
	}

}