コード例 #1
0
        /// <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]);
        }
コード例 #2
0
        /// <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);
        }