UM1L6——Unity内调试安卓应用程序
UM1L6——Unity内调试安卓应用程序
调试指的是什么
我们在这里提到的调试,主要指的是 安卓手机的真机调试
我们在开发前期,开发测试功能都是在Unity内完成的
当我们真正把发布的 apk 安装到手机上运行时
由于运行环境的改变(开发时在 Windows 或 MacOS,使用时在Android或IOS)
我们很多时候需要在真机上进行项目的 性能分析 和 bug处理(断点调试修复bug)
那么这时我们就需要学习如何通过Unity连接真机 来进行项目调试了
准备测试用安卓手机
安卓手机需要打开开发者模式
可以根据自己的手机品牌自行搜索开启方式
一般的操作方式:设置——>关于手机——>版本号(多次连点版本号)
便可开启
在手机的开发者选项中 开启 USB调试功能
一般开发者选项会在:设置——>系统——>开发者选项中,找到USB调试功能 开启它
将手机通过USB接入到你的电脑上,在手机上一般会弹出一个提示,选择允许进行USB调试
在Unity中进行调试相关设置
在 File ——> Build Settings 中进行调试相关的设置
完成 ...
UEDL8——Handles公共类
UEDL8——Handles公共类
本章代码关键字
123Handles //处理类,可以为某个脚本对象或者自定义编辑器窗口拓展在Scene窗口上的显示,可以自定义绘制内容OnSceneGUI() { } //为某个脚本对象扩展在Scene窗口上的显示时,就需要在该方法内编写绘制逻辑SceneView.duringSceneGui //为某个自定义编辑器窗口扩展在Scene窗口上的显示时,就需要将实现了绘制逻辑的方法添加到该事件内,窗口关闭时需要移除
Handles
Handles类提供了很多API,让我们可以在Scene窗口中绘制我们的自定义内容
它和GUI、EditorGUI类似,只不过它专门提供给Scene窗口使用
想要在Scene窗口中显示自定义内容,我们需要在对应的响应函数中进行处理
Scene窗口拓展功能,主要是提供给自定义脚本和自定义窗口的,我们采用对应的规则进行处理
便可以在之后的学习中利用场景更新响应函数来自定义一些Scene窗口的显示内容
Handles的更多内 ...
UEDL7——Inspector窗口拓展
UEDL7——Inspector窗口拓展
本章代码关键字
1234567891011121314151617[CustomEditor()] //如要让类为另外一个类拓展在Inspector窗口的显示,需要添加该特性Editor //编辑器类,如要让类为另外一个类拓展在Inspector窗口的显示,需要继承它SerializedProperty //代表被拓展的脚本对象中的属性,我们可以通过它来修改被拓展的脚本对象中的属性SerializedObject //代表被拓展的脚本对象,可获取被拓展的脚本对象中的属性,修改其在Inspector窗口的显示内容editor.serializedObject //该类拓展显示的脚本对象, ...
UM1L5——Android Studio打包安卓应用
UM1L5——Android Studio打包安卓应用
通过Unity导出Android Studio能够打开的工程
步骤:
设置导出基本信息:公司名、游戏名、图标、包名、密钥等关键信息
在File ——> Build Settings中,勾选 Export Project 选项
点击Export 导出按钮
如果不需要将Unity功能嵌入到Android项目中进行二次开发,那我们一般不使用该种打包方式
在Android Studio中打开Unity导出的工程
最新版Android Studio下载地址:下载 Android Studio 和应用工具 - Android 开发者 | Android Developers (google.cn)
关于Android Studio版本
学习阶段,强烈建议不要使用最新的版本来打开Unity2021导出的Android Project,很有可能出现目前无法解决的多种错误
建议使用和课程一致的Android Studio版本(2021.2),它出现意料之外的问题最少
步骤:
打开Android Studio ...
UEDL6——Event公共类
UEDL6——Event公共类
本章代码关键字
12345678910111213141516171819Event.current //获取当前事件Event.current.alt //判断alt键是否按下Event.current.shift //shift键是否按下Event.current.control //ctrl键是否按下Event.current.isMouse //是否是鼠标事件Event.current.button //判断鼠标左中右键,0,1,2 分别代表 左,右,中Event.current.mousePosition //鼠标相对于窗口坐标系的位置Event.current.isKey //判断是否是键盘输入Event.current.character //获取键盘输入的字符Event.current.keyCode ...
UEDL4-5——绘制色板、绘制曲线
UEDL4-5——绘制色板、绘制曲线
本章代码关键字
12EditorGUIUtility.DrawColorSwatch() //绘制色板,便于EditorGUILayout.ColorField选取固定的颜色EditorGUIUtility.DrawCurveSwatch() //绘制曲线,主要配合EditorGUILayout.CurveField使用,它可以更好的显示绘制的曲线
绘制色板
在指定区域绘制一个色板矩形(相对于EditorGUI.DrawRect,它的不同点是会在矩形底部加一个白色部分)
主要配合EditorGUILayout.ColorField使用,可以使用取色器快速获取指定的默认颜色
123456private Color color;private void OnGUI(){ color = EditorGUILayout.ColorField(new GUIContent("选取颜色"), color, true, true, true); EditorGUIUtility.Draw ...
UEDL4-4——指定区域使用对应鼠标指针
UEDL4-4——指定区域使用对应鼠标指针
本章代码关键字
123EditorGUIUtility.AddCursorRect() //指定区域使用对应鼠标指针EditorGUI.DrawRect() //在编辑器窗口的特定区域绘制颜色MouseCursor //鼠标光标类型枚举
指定区域使用对应鼠标指针
顾名思义,就是让特定区域(由Rect决定)的鼠标指针变为另一个图标(图标由MouseCursor决定)
12345private void OnGUI(){ EditorGUI.DrawRect(new Rect(10, 200, 100, 100), Color.green); EditorGUIUtility.AddCursorRect(new Rect(10, 200, 100, 100), MouseCursor.Zoom);}
显示效果(鼠标指上去变成放大镜图标):
MouseCursor枚举对应的指针图标
下表列出了MouseCursor ...
UEDL4-3——窗口事件传递、坐标转换
UEDL4-3——窗口事件传递、坐标转换
本章代码关键字
123456789EditorGUIUtility.CommandEvent() //生成一个命令事件,需要传入事件名editorWindow.SendEvent() //向窗口发送消息Event.current.type //获取当前事件的类型EventType.ExecuteCommand //事件类型为执行命令Event.current.commandName //获取当前的事件名,可用于确认是否是监听事件EditorGUIUtility.GUIToScreenPoint() //将点从GUI位置转换为屏幕空间EditorGUIUtility.GUIToScreenRect() //将rect从GUI位置转换为屏幕空间EditorGUIUtility.ScreenToGUIPoint() //将点从屏幕空间转换为GUI位置Ed ...
UEDL4-2——搜索框查询、对象选中提示
UEDL4-2——搜索框查询、对象选中提示
本章代码关键字
123456EditorGUIUtility.ShowObjectPicker<>() //执行该方法会弹出一个搜索特定对象的窗口,用于选择自己想要的资源EditorGUIUtility.GetObjectPickerObject() //它可以获取搜索框窗口上选择的对象,需要配合Event事件类相关内容来在正确的时机调用Event.current.commandName //获取当前事件命令的名字,可以通过这里的名字与特定事件名比较来确认当前为何种事件"ObjectSelectorUpdated" //对象选择窗口的对象选择发生变化时发送的事件命令的名字"ObjectSelectorClosed" //对象选择窗口关闭时发送的事件命令的名字EditorGUIUtility.PingObject() ...
UEDL4-1——资源加载
UEDL4-1——资源加载
本章代码关键字
12EditorGUIUtility.Load() //加载Editor Default Resources文件夹下的资源,需要传入资源名(包括后缀名)EditorGUIUtility.LoadRequired() //加载Editor Default Resources文件夹下的资源,需要传入资源名(包括后缀名),但如果没有加载到会报错
Editor Default Resources文件夹
Editor Default Resources 也是Unity当中的一个特殊文件夹,它的主要作用是放置提供给 EditorGUIUtility 加载的资源
想要使用 EditorGUIUtility 公共类来加载资源,我们需要将资源放置在 Editor Default Resources 文件夹中
加载资源
对应API:EditorGUIUtility.Load
注意事项:
只能加载Assets/Editor Default Resources/文件夹下的资源
加载资源时,需要填写资源后缀名
该A ...