示例#1
0
    public void OnSceneGUI()
    {
        if (special == null)
        {
            special = (UISpecialArea)target;
        }

        base.OnSceneGUI();


        //开始绘制GUI
        Handles.BeginGUI();

        GUILayout.BeginArea(new Rect(SceneView.currentDrawingSceneView.position.width - 200, 100, 200, 200));

        /*转换到面   转换到线*/
        SelectedName = !special.DrawWireOrSurface ? EditorStringConfig.getString(10040):EditorStringConfig.getString(10041);


        if (GUILayout.Button(SelectedName, GUILayout.Width(100), GUILayout.Height(20)))
        {
            special.DrawWireOrSurface = !special.DrawWireOrSurface;
        }

        GUILayout.EndArea();


        Handles.EndGUI();
    }
示例#2
0
 public override void OnInspectorGUI()
 {
     //base.OnInspectorGUI();
     if (special == null)
     {
         special = (UISpecialArea)target;
     }
 }
示例#3
0
    //克隆代码
    public override void CloneScript(GameObject cloneSource, GameObject cloneObject)
    {
        UISpecialArea oldareaScript = cloneSource.GetComponent <UISpecialArea>();
        UISpecialArea newareaScript = cloneObject.GetComponent <UISpecialArea>();

        newareaScript.areaData        = oldareaScript.areaData;
        newareaScript.areaSettingData = oldareaScript.areaSettingData;
        newareaScript.InitData();
    }
示例#4
0
    //创建种植物
    public static GameObject CreatePlant(Object resource, Vector3 worldpos, Vector3 scale, SceneElementType type, bool BornAtMap = true, Vector3 worldrotation = default(Vector3))
    {
        GameObject createObj  = PrefabUtility.InstantiatePrefab(resource) as GameObject;
        UISceneMap uiSceneMap = SceneEditorSettings.currMap.GetComponent <UISceneMap>();
        int        TypeIndex  = (int)type;

        if (uiSceneMap != null)
        {
            createObj.transform.parent     = uiSceneMap.ElementParents[TypeIndex - 1];
            createObj.transform.localScale = scale;
            createObj.transform.rotation   = Quaternion.Euler(worldrotation);
            createObj.transform.position   = worldpos;
        }

        switch (type)
        {
        case SceneElementType.NPC:
        {
            UINPC npc = null;
            if (createObj != null)
            {
                npc = createObj.AddComponent <UINPC>();
            }
            if (npc != null)
            {
                //保存数据
                npc.npcSettingData.isAtMap    = BornAtMap;
                npc.npcSettingData.Type       = type;
                npc.npcSettingData.sourcePath = AssetDatabase.GetAssetPath(resource);

                CharacterController controller = npc.GetComponent <CharacterController>();
                if (controller != null)
                {
                    CapsuleCollider capsule = npc.gameObject.AddComponent <CapsuleCollider>();
                    if (capsule != null)
                    {
                        capsule.center    = controller.center;
                        capsule.radius    = controller.radius;
                        capsule.height    = controller.height;
                        capsule.direction = 1;
                    }
                }
            }
            break;
        }

        case SceneElementType.BUILDING:
        {
            break;
        }

        case SceneElementType.TREE:
        {
            break;
        }

        default:
        {
            UISpecialArea area = createObj.GetComponent <UISpecialArea>();
            if (area == null)
            {
                area = createObj.AddComponent <UISpecialArea>();
            }
            //保存数据
            area.areaSettingData.isAtMap    = BornAtMap;
            area.areaSettingData.Type       = type;
            area.areaSettingData.sourcePath = AssetDatabase.GetAssetPath(resource);
            break;
        }
        }
        Selection.activeObject = createObj;
        return(createObj);
    }
示例#5
0
    //自动导入配置文件
    public static void AutoImportSettingFile()
    {
        string path = EditorUtility.OpenFilePanel("导入场景配置文件", Application.dataPath + "/Editor/SceneEditor/JC", "bytes");

        if (string.IsNullOrEmpty(path))
        {
            return;
        }

        List <SceneEditorSettingBaseData> settingDataList = new List <SceneEditorSettingBaseData>();
        string strLine = null;

        try
        {
            FileStream   aFile = new FileStream(path, FileMode.Open);
            StreamReader sr    = new StreamReader(aFile);
            strLine = sr.ReadLine();
            while (strLine != null)
            {
                if (strLine.Length > 0)
                {
                    SceneEditorSettingBaseData settingData = null;
                    string content = strLine.Substring(1);
                    switch (strLine[0])
                    {
                    case 'M':
                    {
                        MapSettingData mapData = fastJSON.JSON.Instance.ToObject <MapSettingData>(content);
                        settingData = (SceneEditorSettingBaseData)mapData;
                        break;
                    }

                    case 'N':
                    {
                        NPCSettingData npcData = fastJSON.JSON.Instance.ToObject <NPCSettingData>(content);
                        settingData = (SceneEditorSettingBaseData)npcData;
                        break;
                    }

                    case 'C':
                    {
                        SpecialAreaSettingData areaData = fastJSON.JSON.Instance.ToObject <SpecialAreaSettingData>(content);
                        settingData = (SceneEditorSettingBaseData)areaData;
                        break;
                    }
                    }
                    if (settingData != null)
                    {
                        settingDataList.Add(settingData);
                    }
                }
                strLine = sr.ReadLine();
            }
            sr.Close();
        }
        catch (IOException ex)
        {
            EditorUtility.DisplayDialog("错误", ex.ToString(), "确定");
            return;
        }

        //Debug.LogError("settingDataList.count="+settingDataList.Count.ToString() );

        //生成场景
        foreach (SceneEditorSettingBaseData baseData in settingDataList)
        {
            GameObject create = null;
            if (baseData.Type == SceneElementType.MAP)
            {
                MapSettingData data = (MapSettingData)baseData;
                create = CreateMap(data.sourcePath, new Vector3(data.Attribute.pos[0], data.Attribute.pos[1], data.Attribute.pos[2]),
                                   new Vector2(data.GridSize[0], data.GridSize[1]), new Color(data.GridColor[0], data.GridColor[1], data.GridColor[2], data.GridColor[3]));
                if (create != null)
                {
                    UISceneMap uimap = create.GetComponent <UISceneMap>();
                    if (uimap != null)
                    {
                        uimap.settingData = data;
                        uimap.mapData     = data.Attribute;
                        uimap.InitData();
                    }
                }
                else
                {
                    break;
                }
            }
            else if (baseData.Type == SceneElementType.NPC)
            {
                NPCSettingData data = (NPCSettingData)baseData;
                create = CreatePlant(data.sourcePath, new Vector3(data.Attribute.pos[0], data.Attribute.pos[1], data.Attribute.pos[2]), new Vector3(data.Attribute.scale[0], data.Attribute.scale[1], data.Attribute.scale[2]),
                                     data.Type, data.isAtMap, new Vector3(data.Attribute.rotation[0], data.Attribute.rotation[1], data.Attribute.rotation[2]));
                if (create != null)
                {
                    //Debug.LogError(data.Attribute.startIntervalTime.ToString());
                    UINPC uinpc = create.GetComponent <UINPC>();
                    if (uinpc != null)
                    {
                        uinpc.settingData = data;
                        uinpc.npcData     = data.Attribute;
                        uinpc.InitData();
                    }
                }
            }
            else
            {
                SpecialAreaSettingData data = (SpecialAreaSettingData)baseData;
                create = CreatePlant(data.sourcePath, new Vector3(data.Attribute.pos[0], data.Attribute.pos[1], data.Attribute.pos[2]), new Vector3(data.Attribute.scale[0], data.Attribute.scale[1], data.Attribute.scale[2]),
                                     data.Type, data.isAtMap, new Vector3(data.Attribute.rotation[0], data.Attribute.rotation[1], data.Attribute.rotation[2]));
                UISpecialArea uiarea = create.GetComponent <UISpecialArea>();
                if (uiarea != null)
                {
                    uiarea.settingData = data;
                    uiarea.areaData    = data.Attribute;
                    uiarea.InitData();
                }
            }
        }
    }