void Awake() { charArray = GetComponentsInChildren <Character>(); drawDataDict = new Dictionary <CharacterData, DrawData>(); DrawData.LoadBlockParameterName(CharacterData.boneCount); for (int i = 0; i < charArray.Length; i++) { DrawData data; Character chr = charArray[i]; Transform[] boneArray = chr.BuildBone(); if (drawDataDict.ContainsKey(chr.data)) { data = drawDataDict[chr.data]; data.characterList.Add(chr); data.boneTransformList.Add(chr.bones); } else { data = new DrawData( Character.BuildMesh(chr.data), Array.FindIndex(texArrayManager.textureInputArray, (tex) => tex.Equals(chr.data.texture))); data.characterList.Add(chr); data.boneTransformList.Add(chr.bones); drawDataDict.Add(chr.data, data); } chr.BuildCharacter(data.mesh, material, boneArray); } var enumer = drawDataDict.GetEnumerator(); while (enumer.MoveNext()) { enumer.Current.Value.BoneSetting(); } }