/// <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> /// <returns></returns> private bool DrawPartsDragAndDropArea() { bool change = false; var evt = Event.current; var dropArea = GUILayoutUtility.GetRect(0.0f, 50.0f, GUILayout.ExpandWidth(true)); var style = new GUIStyle(GUI.skin.box); style.normal.textColor = Color.white; style.alignment = TextAnchor.MiddleCenter; GUI.backgroundColor = new Color(0.7f, 0.7f, 0.7f); GUI.Box(dropArea, "Drag & Drop\n[Avatar Parts]", style); GUI.backgroundColor = Color.white; GameObject attachPartsObject = null; int id = GUIUtility.GetControlID(FocusType.Passive); switch (evt.type) { case EventType.DragUpdated: case EventType.DragPerform: if (!dropArea.Contains(evt.mousePosition)) { break; } DragAndDrop.visualMode = DragAndDropVisualMode.Copy; DragAndDrop.activeControlID = id; if (evt.type == EventType.DragPerform) { DragAndDrop.AcceptDrag(); foreach (var draggedObject in DragAndDrop.objectReferences) { //Debug.Log("Drag Object:" + AssetDatabase.GetAssetPath(draggedObject)); //m_FilePath.stringValue = AssetDatabase.GetAssetPath(draggedObject); //Debug.Log("GameObject:" + (draggedObject is GameObject)); //Debug.Log("AvatarParts:" + (draggedObject is MagicaAvatarParts)); if (draggedObject is GameObject) { var go = draggedObject as GameObject; if (go.GetComponent <MagicaAvatarParts>()) { //Debug.Log("Avatar Parts!!"); attachPartsObject = go; } } } DragAndDrop.activeControlID = 0; } Event.current.Use(); //change = true; break; } if (attachPartsObject) { // パーツ追加 MagicaAvatar scr = target as MagicaAvatar; scr.AttachAvatarParts(attachPartsObject); change = true; } return(change); }