/// <summary> /// アバターパーツ変更 /// </summary> /// <param name="id"></param> /// <param name="dir"></param> private void ChangeParts(int id, int dir) { //Debug.Log("id:" + id + " dir:" + dir); var group = avatarPartsGroupList[id]; if (group.handle != 0) { avatar.DetachAvatarParts(group.handle); group.handle = 0; } var index = group.index + dir; int cnt = group.partsPrefabList.Count; if (index < 0) { index += cnt; } else if (index >= cnt) { index -= cnt; } group.index = index; group.handle = avatar.AttachAvatarParts(group.partsPrefabList[index]); }
//============================================================================================= /// <summary> /// 破棄 /// </summary> public void Dispose() { // 親から削除する if (parentAvatar != null) { parentAvatar.DetachAvatarParts(gameObject); parentAvatar = null; } }
//========================================================================================= /// <summary> /// パーツ一覧表示 /// </summary> private bool DrawPartsList() { MagicaAvatar scr = target as MagicaAvatar; bool change = false; EditorGUILayout.LabelField("Attach Parts", EditorStyles.boldLabel); // ドラッグ&ドロップ change = DrawPartsDragAndDropArea(); // パーツ一覧 MagicaAvatarParts removeParts = null; for (int i = 0; i < scr.Runtime.AvatarPartsCount; i++) { var parts = scr.Runtime.GetAvatarParts(i); if (parts) { EditorGUILayout.BeginHorizontal(GUI.skin.box); GUILayout.Space(30); EditorGUILayout.HelpBox(parts.name, MessageType.None); GUI.backgroundColor = Color.red; if (GUILayout.Button("Remove")) { removeParts = parts; } GUI.backgroundColor = Color.white; EditorGUILayout.EndHorizontal(); } } EditorGUILayout.Space(); if (removeParts) { // パーツ削除 scr.DetachAvatarParts(removeParts); change = true; } return(change); }