//bool isfllowCamera = false; public void OnSceneGUI() { base.OnSceneGUI(); if (uiMap == null) { uiMap = (UISceneMap)target; } Handles.BeginGUI(); //规定GUI显示区域 GUILayout.BeginArea(new Rect(100, 70, 200, 100)); /*正在编辑*/ GUILayout.Label(EditorStringConfig.getString(10030) + ":" + uiMap.gameObject.name); //GFGrid gfGrid = SceneEditorSettings.mapGrid; /*显示网格*/ uiMap.isShowMap = GUILayout.Toggle(uiMap.isShowMap, EditorStringConfig.getString(10005)); /*允许复活*/ uiMap.mapData.canReborn = System.Convert.ToInt32(GUILayout.Toggle(System.Convert.ToBoolean(uiMap.mapData.canReborn), EditorStringConfig.getString(10039))); GUILayout.EndArea(); Handles.EndGUI(); }
static void AddWindow() { //创建窗口 //_this = (SceneEditor)EditorWindow.GetWindowWithRect (typeof (SceneEditor),wr,false,EditorStringConfig.getString(10028)); _this = EditorWindow.GetWindow <SceneEditor>(EditorStringConfig.getString(10028), true); _this.Show(); }
public void OnSceneGUI() { if (npc == null) { npc = (UINPC)target; } base.OnSceneGUI(); //开始绘制GUI Handles.BeginGUI(); GUILayout.BeginArea(new Rect(SceneView.currentDrawingSceneView.position.width - 200, 100, 200, 200)); /*true显示资源细节 false显示合并资源*/ string SelectedName = !npc.npcSettingData.isMergeResource ? EditorStringConfig.getString(10043):EditorStringConfig.getString(10044); if (GUILayout.Button(SelectedName, GUILayout.Width(100), GUILayout.Height(20))) { npc.npcSettingData.isMergeResource = !npc.npcSettingData.isMergeResource; HideFlags flags = npc.npcSettingData.isMergeResource ? HideFlags.HideInHierarchy | HideFlags.HideInInspector : HideFlags.None; npc.SetChildrenGameObjectHideFlags(flags); } GUILayout.EndArea(); Handles.EndGUI(); }
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(); }
//创建种植物 public static GameObject CreatePlant(string sourcePath, Vector3 worldpos, Vector3 scale, SceneElementType type, bool BornAtMap = true, Vector3 worldrotation = default(Vector3)) { Object plantSource = AssetDatabase.LoadMainAssetAtPath(sourcePath); if (plantSource != null) { return(CreatePlant(plantSource, worldpos, scale, type, BornAtMap, worldrotation)); } EditorUtility.DisplayDialog(EditorStringConfig.getString(10042), "Not found: " + sourcePath, EditorStringConfig.getString(10025)); return(null); }
//创建地图 public static GameObject CreateMap(string sourcePath, Vector3 worldPos = default(Vector3), Vector2 mapGridSize = default(Vector2), Color GridGolor = default(Color)) { Object mapSource = AssetDatabase.LoadMainAssetAtPath(sourcePath); if (mapSource != null) { return(CreateMap(mapSource, worldPos, mapGridSize)); } EditorUtility.DisplayDialog(EditorStringConfig.getString(10042), "Not found: " + sourcePath, EditorStringConfig.getString(10025)); return(null); }
void ShowMapMenu() { if (SceneEditorSettings.SceneSourceFileObject == null) { SceneEditorSettings.SceneSourceFileObject = AssetDatabase.LoadMainAssetAtPath("Assets/Resources/UnPack/Scenes"); } /*资源来源*/ Object resultObject = EditorGUILayout.ObjectField(EditorStringConfig.getString(10012), SceneEditorSettings.SceneSourceFileObject, typeof(Object)); bool isDifferentFromOld = resultObject != SceneEditorSettings.SceneSourceFileObject; SceneEditorSettings.SceneSourceFileObject = resultObject; if (SceneEditorSettings.SceneSourceFileObject != null) { if (isDifferentFromOld) { RefreshMapResources(); } GUILayout.BeginHorizontal(); /*地图名称*/ currMapId = EditorGUILayout.Popup(EditorStringConfig.getString(10014), currMapId, mapNames.ToArray()); /*刷新*/ if (GUILayout.Button(EditorStringConfig.getString(10002), GUILayout.Width(50), GUILayout.Height(16))) { RefreshMapResources(); } GUILayout.EndHorizontal(); GUILayout.BeginHorizontal(); /*创建*/ if (GUILayout.Button(EditorStringConfig.getString(10015), GUILayout.Width(150), GUILayout.Height(40))) { SceneEditorTools.CreateMap(mapObject[currMapId], Vector3.zero); } /*载入配置表*/ if (GUILayout.Button(EditorStringConfig.getString(10016), GUILayout.Width(150), GUILayout.Height(40))) { SceneEditorTools.AutoImportSettingFile(); } GUILayout.EndHorizontal(); } }
void ShowZhongGuai(string[] FarmingType) { /*出生到地图上(锁定Y轴)*/ BornAtMap = EditorGUILayout.Toggle(EditorStringConfig.getString(10017), BornAtMap); if (BornAtMap) { Vector2 bornPos = new Vector2(SceneEditorSettings.BronPostionX, SceneEditorSettings.BronPostionZ); /*出生坐标*/ bornPos = EditorGUILayout.Vector2Field(EditorStringConfig.getString(10018), bornPos); SceneEditorSettings.BronPostionX = (int)bornPos.x; SceneEditorSettings.BronPostionZ = (int)bornPos.y; } else { Vector3 bornPos = new Vector3(SceneEditorSettings.BronPostionX, SceneEditorSettings.BronPostionY, SceneEditorSettings.BronPostionZ); /*出生坐标*/ bornPos = EditorGUILayout.Vector3Field(EditorStringConfig.getString(10018), bornPos); SceneEditorSettings.BronPostionX = (int)bornPos.x; SceneEditorSettings.BronPostionY = (int)bornPos.y; SceneEditorSettings.BronPostionZ = (int)bornPos.z; } GUILayout.Space(20f); GUILayout.BeginHorizontal(); /*创建*/ if (GUILayout.Button(EditorStringConfig.getString(10015) + FarmingType[SceneEditorSettings.farmingTypeIndex], GUILayout.Width(150), GUILayout.Height(40))) { SceneEditorTools.CreatePlant(PlantSourceObject[PlantSourceIndex], new Vector3(SceneEditorSettings.BronPostionX, SceneEditorSettings.BronPostionY, SceneEditorSettings.BronPostionZ), Vector3.one, (SceneElementType)SceneEditorSettings.farmingTypeIndex, BornAtMap); } /*保存配置表*/ if (GUILayout.Button(EditorStringConfig.getString(10019), GUILayout.Width(150), GUILayout.Height(40))) { SceneEditorTools.AutoGenerateSettingFile(); } /*导出游戏数据*/ if (GUILayout.Button(EditorStringConfig.getString(10020), GUILayout.Width(150), GUILayout.Height(40))) { SceneEditorTools.AutoGenerateGameData(); } GUILayout.EndHorizontal(); }
public void OnSceneGUI() { UISceneElementBase baseTarget = (UISceneElementBase)target; if (baseTarget == null || !baseTarget.enabled) { return; } baseTarget.UpdateData(); SceneCamera = SceneView.currentDrawingSceneView.camera; //Vector3 CameraPos = SceneCamera.transform.position; if (Event.current.isMouse) { if (Event.current.type == EventType.MouseDown) { OnPressAtDrawScene(true); } else if (Event.current.type == EventType.MouseUp) { OnPressAtDrawScene(false); } } if (Event.current.isKey) { if (Event.current.type == EventType.KeyDown) { OnKeyBoardDown(Event.current.keyCode); } } Handles.BeginGUI(); GUILayout.BeginArea(new Rect(0, 0, 300, 100)); //场景摄像机参考 GUILayout.Label("SceneCamera " + EditorStringConfig.getString(10037) + ":" + SceneCamera.transform.position.ToString()); GUILayout.Label("SceneCamera " + EditorStringConfig.getString(10038) + ":" + SceneCamera.transform.rotation.eulerAngles.ToString()); GUILayout.EndArea(); Handles.EndGUI(); }
public void OnSceneGUI() { if (element == null) { element = (UISceneElement)target; } if (element == null || !element.enabled) { return; } if (element.isDeleteGameObject) { //销毁 EditorMemoryRecycle.RemoveMemory(element.gameObject); element.isDeleteGameObject = false; } base.OnSceneGUI(); //反算屏幕坐标 if (MoveFllowMouse) { //Debug.LogError("[MoveFllowMouse]"+MoveFllowMouse.ToString()); Vector3 mypos = element.transform.position; if (element.settingData.Type == SceneElementType.NPC) { mypos.y = 0; } else { mypos.y = element.transform.localScale.y / 2f; } element.transform.position = mypos; Vector3 ScenePos = SceneCamera.WorldToScreenPoint(element.transform.position); Vector3 mousePosition = Event.current.mousePosition; float height = SceneView.currentDrawingSceneView.position.height; mousePosition.y = height - mousePosition.y - 15f; mousePosition.z = ScenePos.z; Vector3 resultPos = SceneCamera.ScreenToWorldPoint(mousePosition); element.transform.position = resultPos; } //绘制文本框 Handles.Label(element.transform.position + Vector3.up * 3, element.transform.name + " : " + element.transform.position.ToString()); //开始绘制GUI Handles.BeginGUI(); //规定GUI显示区域 GUILayout.BeginArea(new Rect(100, 100, 200, 400)); //GUI绘制文本框 /*正在编辑*/ GUILayout.Label(EditorStringConfig.getString(10030) + ":" + element.gameObject.name); /*吸附到地图*/ element.isAtMap = GUILayout.Toggle(element.isAtMap, EditorStringConfig.getString(10031)); // /*鼠标跟随*/ // element.isSeletctedFllowMouse = GUILayout.Toggle(element.isSeletctedFllowMouse,EditorStringConfig.getString(10032)); // // if(element.isSeletctedFllowMouse) element.isAtMap = true; //自动吸附到地图 if (element.isAtMap) { element.AdsorptionToMap(); } else { /*种植*/ if (GUILayout.Button(EditorStringConfig.getString(10034), GUILayout.Width(100), GUILayout.Height(20))) { element.CorrectionPostion(); } } /*克隆*/ if (GUILayout.Button(EditorStringConfig.getString(10035), GUILayout.Width(100), GUILayout.Height(20))) { Object prefab = EditorUtility.GetPrefabParent(Selection.activeObject); GameObject cloneSource = Selection.activeObject as GameObject; GameObject cloneObject = null; if (prefab) { Vector3 oldpos = element.gameObject.transform.position; cloneObject = SceneEditorTools.CreatePlant(prefab, new Vector3(oldpos.x + 3f + element.transform.localScale.x, oldpos.y, oldpos.z), element.transform.localScale, element.settingData.Type, element.isAtMap, element.transform.rotation.eulerAngles); } //克隆代码 element.CloneScript(cloneSource, cloneObject); } /*销毁*/ if (GUILayout.Button(EditorStringConfig.getString(10033), GUILayout.Width(100), GUILayout.Height(20))) { element.isDeleteGameObject = true; } //GUILayout.BeginHorizontal(); element.isSetTransform = GUILayout.Toggle(element.isSetTransform, "Transform(World)", EditorStyles.foldout); //GUILayout.EndHorizontal(); Rect lastRect = GUILayoutUtility.GetLastRect(); if (element.isSetTransform) { ++EditorGUI.indentLevel; GUILayout.BeginHorizontal(); if (GUI.Button(new Rect(16, lastRect.yMax, 20, 18), "P")) { element.transform.position = Vector3.zero; } element.transform.position = EditorGUI.Vector3Field(new Rect(20, lastRect.yMax + 2, 150, 20), "", element.transform.position); GUILayout.EndHorizontal(); lastRect.yMax += 20f; GUILayout.BeginHorizontal(); if (GUI.Button(new Rect(16, lastRect.yMax, 20, 18), "R")) { element.transform.rotation = Quaternion.Euler(Vector3.zero); } element.transform.rotation = Quaternion.Euler(EditorGUI.Vector3Field(new Rect(20, lastRect.yMax + 2, 150, 20), "", element.transform.rotation.eulerAngles)); GUILayout.EndHorizontal(); lastRect.yMax += 20f; GUILayout.BeginHorizontal(); if (GUI.Button(new Rect(16, lastRect.yMax, 20, 18), "S")) { element.transform.localScale = Vector3.one; } element.transform.localScale = EditorGUI.Vector3Field(new Rect(20, lastRect.yMax + 2, 150, 20), "", element.transform.localScale); GUILayout.EndHorizontal(); --EditorGUI.indentLevel; } GUILayout.EndArea(); Handles.EndGUI(); }
static void OnSceneDraw(SceneView sceneView) { if (Event.current.isKey) { if (Event.current.type == EventType.KeyDown) { if (Event.current.keyCode == KeyCode.A) { SceneEditorSettings.isOpenFllowMouse = !SceneEditorSettings.isOpenFllowMouse; } } } if (Event.current.isMouse) { if (Event.current.type == EventType.MouseDown) { /*拖拽鼠标具备选中功能*/ if (Tools.current == Tool.View) { Vector3 mousePosition = Event.current.mousePosition; float height = SceneView.currentDrawingSceneView.position.height; mousePosition.y = height - mousePosition.y - 15f; Ray ray = sceneView.camera.ScreenPointToRay(mousePosition); RaycastHit hit; Physics.Raycast(ray, out hit); if (hit.transform != null && hit.transform.name != "Grid") { GameObject OldSelection = Selection.activeObject as GameObject; if (OldSelection != hit.transform.gameObject) { UISceneElementBase _old = null; if (OldSelection != null) { _old = OldSelection.GetComponent <UISceneElementBase>(); } if (_old != null) { _old.OnLostFocus(); } UISceneElementBase _new = hit.transform.gameObject.GetComponent <UISceneElementBase>(); if (_new != null) { _new.OnFocus(); } Selection.activeObject = hit.transform.gameObject; } } } } } //开始绘制GUI Handles.BeginGUI(); GUILayout.BeginArea(new Rect(0, sceneView.position.height - 70, 200, 200)); string currMapName = ""; if (SceneEditorSettings.currMap != null) { currMapName = SceneEditorSettings.currMap.name; } /*正在编辑*/ GUILayout.Label(EditorStringConfig.getString(10030) + ": " + currMapName); #region 标跟随 /*是否打开了鼠标跟随功能*/ bool isOpenFllowMouseOld = SceneEditorSettings.isOpenFllowMouse; SceneEditorSettings.isOpenFllowMouse = GUILayout.Toggle(SceneEditorSettings.isOpenFllowMouse, EditorStringConfig.getString(10032) + "(" + EditorStringConfig.getString(10045) + ":A)"); /*从拖拽状态切出*/ if (isOpenFllowMouseOld != SceneEditorSettings.isOpenFllowMouse && isOpenFllowMouseOld) { Tools.current = Tool.Move; } /*强制鼠标拖拽*/ if (SceneEditorSettings.isOpenFllowMouse) { Tools.current = Tool.View; } #endregion if (SceneEditorSettings.currMap != null) { UISceneMap map = SceneEditorSettings.currMap.GetComponent <UISceneMap>(); if (map != null) { if (map.EditorCamera != null) { //bool isOldOpen = isOpenSceneCamera; /*打开场景摄像机*/ isOpenSceneCamera = GUILayout.Toggle(isOpenSceneCamera, EditorStringConfig.getString(10029)); map.EditorCamera.enabled = isOpenSceneCamera; //map.EditorCamera.hideFlags = HideFlags.NotEditable; if (map.EditorCamera.isOrthoGraphic) { map.EditorCamera.isOrthoGraphic = false; } map.EditorCamera.transform.rotation = sceneView.camera.transform.rotation; map.EditorCamera.transform.position = sceneView.camera.transform.position; } } } GUILayout.EndArea(); Handles.EndGUI(); }
void OnGUI() { // NewDrawTest(); // return; SetFontStyle(Color.gray, 18, FontStyle.Italic, EditorStyles.label); GUILayout.BeginHorizontal(); /*版本:1.0.1*/ GUILayout.Label(EditorStringConfig.getString(10000), style); GUILayout.EndHorizontal(); DrawLine(); GUILayout.Space(15); GUILayout.BeginHorizontal(); SetFontStyle(Color.gray, 15, FontStyle.Italic); /*正在编辑地图:*/ GUILayout.Label(EditorStringConfig.getString(10001), style); SceneEditorSettings.currMap = EditorGUILayout.ObjectField(SceneEditorSettings.currMap, typeof(GameObject), true) as GameObject; /*刷新数据*/ if (GUILayout.Button(EditorStringConfig.getString(10002, 10003), GUILayout.Width(60), GUILayout.Height(16))) { RefreshAllData(); } GUILayout.EndHorizontal(); GameObject currMap = SceneEditorSettings.currMap; bool isHaveMap = currMap == null; if (isHaveMap) { /*未检测到场景,你可以\n1.创建一个新场景. \n2.导入一个已经保存的场景配置表.\n3.从Hierarchy视图中拖入一个已有的场景*/ EditorGUILayout.HelpBox(EditorStringConfig.getString(10021), MessageType.Error); ShowMapMenu(); } else { GUILayout.Space(10); GUILayout.BeginHorizontal(); /*销毁地图*/ if (GUILayout.Button(EditorStringConfig.getString(10022), GUILayout.Width(150), GUILayout.Height(40))) { /*"友情提示","你确定要销毁地图","确定","取消"*/ bool result = EditorUtility.DisplayDialog(EditorStringConfig.getString(10023), EditorStringConfig.getString(10024) + currMap.name, EditorStringConfig.getString(10025), EditorStringConfig.getString(10026)); if (result) { GameObject currMapObj = GameObject.Find(currMap.name); DestroyImmediate(currMapObj); currMapId = 0; SceneEditorSettings.currMap = null; } } /*载入配置表*/ if (GUILayout.Button(EditorStringConfig.getString(10016), GUILayout.Width(150), GUILayout.Height(40))) { /*"友情提示","是否先保存当前场景?","确定","取消"*/ bool result = EditorUtility.DisplayDialog(EditorStringConfig.getString(10023), EditorStringConfig.getString(10027), EditorStringConfig.getString(10025), EditorStringConfig.getString(10026)); if (result) { SceneEditorTools.AutoGenerateSettingFile(); } else { GameObject currMapObj = GameObject.Find(currMap.name); DestroyImmediate(currMapObj); SceneEditorSettings.currMap = null; } SceneEditorTools.AutoImportSettingFile(); } GUILayout.EndHorizontal(); //如果当前创建了地图 if (currMap != null) { GUILayout.Space(10); DrawLine(); SetFontStyle(Color.gray, 12, FontStyle.Italic, EditorStyles.foldout); /*地图编辑*/ SceneEditorSettings.isEditorMapGrid = EditorGUILayout.Foldout(SceneEditorSettings.isEditorMapGrid, EditorStringConfig.getString(10004), style); if (SceneEditorSettings.isEditorMapGrid) { ++EditorGUI.indentLevel; GameObject map = SceneEditorSettings.currMap; UISceneMap uimap = map.GetComponent <UISceneMap>(); if (uimap != null) { bool oldShowMap = uimap.isShowMap; /*显示网格*/ uimap.isShowMap = EditorGUILayout.Toggle(EditorStringConfig.getString(10005), uimap.isShowMap); if (oldShowMap != uimap.isShowMap) { SceneView.RepaintAll(); } float gridwidth = uimap.renderTo.x - uimap.renderFrom.x; float gridheight = uimap.renderTo.y - uimap.renderFrom.y; Vector2 gridSize = new Vector3(gridwidth, gridheight); Vector2 oldgridSize = gridSize; /*网格大小*/ gridSize = EditorGUILayout.Vector2Field(EditorStringConfig.getString(10006), gridSize); uimap.renderFrom = new Vector3(-gridSize.x / 2f, -gridSize.y / 2f, 0); uimap.renderTo = new Vector3(gridSize.x / 2f, gridSize.y / 2f, 0); if (oldgridSize != gridSize) { SceneView.RepaintAll(); } Color oldaxisColors = uimap.axisColors; /*网络颜色*/ uimap.axisColors = EditorGUILayout.ColorField(EditorStringConfig.getString(10007), uimap.axisColors); if (oldaxisColors != uimap.axisColors) { SceneView.RepaintAll(); } } --EditorGUI.indentLevel; } //显示网络编辑模块 GUILayout.Space(10); DrawLine(); string[] FarmingType = System.Enum.GetNames(typeof(SceneElementType)); /*请选择*/ FarmingType[0] = EditorStringConfig.getString(10008); SetFontStyle(Color.gray, 12, FontStyle.Italic, EditorStyles.foldout); /*地图种怪编辑*/ SceneEditorSettings.isOpenFarming = EditorGUILayout.Foldout(SceneEditorSettings.isOpenFarming, EditorStringConfig.getString(10009), style); if (SceneEditorSettings.isOpenFarming) { ++EditorGUI.indentLevel; EditorGUILayout.BeginHorizontal(); /*种植类型*/ SceneEditorSettings.farmingTypeIndex = EditorGUILayout.Popup(EditorStringConfig.getString(10010), SceneEditorSettings.farmingTypeIndex, FarmingType); /*编辑*/ if (GUILayout.Button(EditorStringConfig.getString(10011), GUILayout.Width(50), GUILayout.Height(16))) { SceneEditorGridWindow window = (SceneEditorGridWindow)EditorWindow.GetWindow(typeof(SceneEditorGridWindow)); window.Init(); } EditorGUILayout.EndHorizontal(); GUILayout.Space(5); //如果用户选择了一种类型 if (SceneEditorSettings.farmingTypeIndex > 0) { Object PlantSource = SceneEditorSettings.GetPlantFileObject((SceneElementType)SceneEditorSettings.farmingTypeIndex); EditorGUILayout.BeginHorizontal(); /*资源来源*/ Object currPlantSource = EditorGUILayout.ObjectField(EditorStringConfig.getString(10012), PlantSource, typeof(Object)); //资源文件夹是否发生了改变 bool isChanged = PlantSource != currPlantSource; SceneEditorSettings.SetPlantFileObject((SceneElementType)SceneEditorSettings.farmingTypeIndex, currPlantSource); /*刷新*/ if (GUILayout.Button(EditorStringConfig.getString(10002), GUILayout.Width(50), GUILayout.Height(16))) { if (currPlantSource != null) { GetGameObjectsNameInFolder(currPlantSource); } } EditorGUILayout.EndHorizontal(); if (PlantSource != null) { if (isChanged) { GetGameObjectsNameInFolder(currPlantSource); } GUILayout.Space(5); PlantSourceIndex = EditorGUILayout.Popup(FarmingType[SceneEditorSettings.farmingTypeIndex] + "名称:", PlantSourceIndex, PlantSourceName.ToArray()); } GUILayout.Space(5); GUILayout.BeginHorizontal(); GUILayout.Space(this.position.width - 100); /*更新地图分类*/ if (GUILayout.Button(EditorStringConfig.getString(10013), GUILayout.Width(100), GUILayout.Height(40))) { SceneEditorSettings.currMap.GetComponent <UISceneMap>().RefreshClassification(); } GUILayout.EndHorizontal(); GUILayout.Space(5); ShowZhongGuai(FarmingType); } --EditorGUI.indentLevel; } } } GUILayout.Space(5); DrawLine(); }