void OnGUI() { if (GUILayout.Button("Add/Remove Sword")) { if (swordInstance == null) { Transform hand = SearchHierarchyForBone(targetCharacter.transform, "RightHandAttachPoint"); swordInstance = (GameObject)Instantiate(swordPrefab); swordInstance.transform.parent = hand; swordInstance.transform.localPosition = Vector3.zero; swordInstance.transform.localRotation = Quaternion.identity; swordInstance.transform.localScale = Vector3.one; GameObject[] objsToAdd = new GameObject[1] { swordInstance.GetComponentInChildren <MeshRenderer>().gameObject }; skinnedMeshBaker.AddDeleteGameObjects(objsToAdd, null, true); skinnedMeshBaker.Apply(); } else if (skinnedMeshBaker.CombinedMeshContains(swordInstance.GetComponentInChildren <MeshRenderer>().gameObject)) { GameObject[] objsToDelete = new GameObject[1] { swordInstance.GetComponentInChildren <MeshRenderer>().gameObject }; skinnedMeshBaker.AddDeleteGameObjects(null, objsToDelete, true); skinnedMeshBaker.Apply(); Destroy(swordInstance); swordInstance = null; } } if (GUILayout.Button("Add/Remove Hat")) { if (hatInstance == null) { Transform hand = SearchHierarchyForBone(targetCharacter.transform, "HeadAttachPoint"); hatInstance = (GameObject)Instantiate(hatPrefab); hatInstance.transform.parent = hand; hatInstance.transform.localPosition = Vector3.zero; hatInstance.transform.localRotation = Quaternion.identity; hatInstance.transform.localScale = Vector3.one; GameObject[] objsToAdd = new GameObject[1] { hatInstance.GetComponentInChildren <MeshRenderer>().gameObject }; skinnedMeshBaker.AddDeleteGameObjects(objsToAdd, null, true); skinnedMeshBaker.Apply(); } else if (skinnedMeshBaker.CombinedMeshContains(hatInstance.GetComponentInChildren <MeshRenderer>().gameObject)) { GameObject[] objsToDelete = new GameObject[1] { hatInstance.GetComponentInChildren <MeshRenderer>().gameObject }; skinnedMeshBaker.AddDeleteGameObjects(null, objsToDelete, true); skinnedMeshBaker.Apply(); Destroy(hatInstance); hatInstance = null; } } if (GUILayout.Button("Add/Remove Glasses")) { if (glassesInstance == null) { Transform hand = SearchHierarchyForBone(targetCharacter.transform, "NoseAttachPoint"); glassesInstance = (GameObject)Instantiate(glassesPrefab); glassesInstance.transform.parent = hand; glassesInstance.transform.localPosition = Vector3.zero; glassesInstance.transform.localRotation = Quaternion.identity; glassesInstance.transform.localScale = Vector3.one; GameObject[] objsToAdd = new GameObject[1] { glassesInstance.GetComponentInChildren <MeshRenderer>().gameObject }; skinnedMeshBaker.AddDeleteGameObjects(objsToAdd, null, true); skinnedMeshBaker.Apply(); } else if (skinnedMeshBaker.CombinedMeshContains(glassesInstance.GetComponentInChildren <MeshRenderer>().gameObject)) { GameObject[] objsToDelete = new GameObject[1] { glassesInstance.GetComponentInChildren <MeshRenderer>().gameObject }; skinnedMeshBaker.AddDeleteGameObjects(null, objsToDelete, true); skinnedMeshBaker.Apply(); Destroy(glassesInstance); glassesInstance = null; } } }