完成环境部署,day2出了点小问题, 金山毒霸有误删win10的网络项问题
重装后需要搭建,
jdk+adb+unity对应版本+rider+git+npp+钉钉+chrome件文件夹链接+clone项目代码
项目初步熟悉建立过程:
1. 先定位主要涉及目录(非插件类)
包括Build, Configs 渠道配置项回顾 scriptableObject
Game目录,主要是对象实体Entity, Scene, 各种UI的Form, 除scene外按prefab归档
Scripts目录, 主要代码目录,接下分析
2. 定位程序入口
由于魔改Game Framework后的版本程序主入口不再是unity默认的那个,是通过unity的编辑器扩展功能实现
在script的editor的目录下,
通过方法InitializeOnLoad,在编辑器层面固定执行初始化方法
EditorApplication.playModeStateChanged += OnPlayModeStateChanged; ToolbarExtender.LeftToolbarGUI.Add(OnToolBarGUILeft); ToolbarExtender.RightToolbarGUI.Add(OnToolBarGUIRight);
向中间play的工具栏的左右添加自定义组件
当执行play时,不管当前的scene如何,固定定位到主场景执行
private static void LaunchGame() { Debug.Log("launch game"); if (EditorApplication.isCompiling || EditorApplication.isPlaying || EditorApplication.isPaused) { return; } var activeScene = SceneManager.GetActiveScene(); if (activeScene.name == "GameFramework") { //直接启动 EditorApplication.isPlaying = true; } else { PlayerPrefs.SetString(NeedRestoreSceneSaveKey, activeScene.path); EditorSceneManager.OpenScene("Assets/GameFramework.unity"); EditorApplication.isPlaying = true; } }
执行完毕后, 通过playerPrefs暂存的当前场景恢复到当前scene在
OnPlayModeStateChanged方法:
private static void OnPlayModeStateChanged(PlayModeStateChange state) { if (state == PlayModeStateChange.EnteredEditMode) { var needRestoreSceneAssetPath = PlayerPrefs.GetString(NeedRestoreSceneSaveKey); if (!string.IsNullOrEmpty(needRestoreSceneAssetPath)) { EditorSceneManager.OpenScene(needRestoreSceneAssetPath); PlayerPrefs.DeleteKey(NeedRestoreSceneSaveKey); } } else if (state == PlayModeStateChange.EnteredPlayMode) { stayAtSceneViewWhenPlayGame = PlayerPrefs.GetInt(StayAtSceneViewSaveKey) == 1; if (stayAtSceneViewWhenPlayGame) { EditorWindow.FocusWindowIfItsOpen(typeof(SceneView)); Debug.Log("focus scene view"); } } }
odin插件学习
十分钟入门Unity革命性编辑器拓展插件——Odin_哔哩哔哩_bilibili
先从网站了解为什么要使用odin,以及odin开发带来的好处
1. 简化代码开发工作量;
2. 轻松实现dictionary等类型的序列化显示;
3. 更美观清晰的ui界面
并进行了简单的使用了解,对于复杂用法还有待学习