UEDL4——EditorGUIUtility公共类
UEDL4——EditorGUIUtility公共类
EditorGUIUtility
Utility是实用的意思,EditorGUIUtility 是 EditorGUI 中的一个实用工具类
提供了一些 EditorGUI 相关的其他辅助API,我们只需要学习其中的相对常用的内容
官方文档:
Unity - Scripting API: EditorGUIUtility (unity3d.com)(英文文档)
EditorGUIUtility - Unity 脚本 API(中文文档,较少内容未翻译,缺少一些静态方法描述)
本章包括以下内容:
资源加载
搜索框查询、对象选中提示
窗口事件传递、坐标转换
指定区域使用对应鼠标指针
绘制色板、绘制曲线
CS4L?——反射
CS4L?——反射
UM1L4——Player Settings 打包安卓应用程序相关设置
UM1L4——Player Settings 打包安卓应用程序相关设置
Player Settings(打包安卓应用程序相关设置)
Build Settings ——> Player Settings 即可直接进入进行相关设置
基础设置
公司名
项目名
版本号
默认图标
默认鼠标指针
光标贴图偏移
图标设置 Icon
设置在设备上显示的应用图标
Adaptive:运行在Android8.0及以上版本上的设备显示的应用图标
Round:运行在Android7.1及以上版本上的设备显示的应用图标
Legacy icons:运行在Android7.1以下版本上的设备显示的应用图标
里面的细分选项就是不同分辨率下的图标
分辨率和演示设置 Resolution and Presentation
分辨率和演示 Resoultion and Presentation
Fullscreen Mode 全屏模式
Fullscreen Window: 全屏窗口,导航栏始终处于隐藏状态
会缩放应用程序内容,为了匹配纵横比,可能会有黑边
Window ...
UM1L3——Build Settings 打包安卓应用程序相关设置
UM1L3——Build Settings 打包安卓应用程序相关设置
Build Settings(打包安卓应用程序相关设置)
新版本特有参数:
Texture Compression:纹理压缩 设置发布后的纹理压缩格式
Use Player Settings: 使用在播放器设置中设置的纹理压缩格式
ETC:使用ETC格式(推荐)
ETC2:使用ETC2格式
ASTC:使用ASTC格式
DXT:使用DXT格式
PVRTC:使用PVRTC格式
以前讲过相关内容,详见:U3L2-5——参数设置—平台设置
了解格式详细信息:Recommended, default, and supported texture formats, by platform - Unity 手册
注意:对于安卓ETC2是常用的压缩格式,支持透明通道。
但是对于老设备不支持ETC2,可以使用ETC。
我们可以统一设置为ETC2,在下方的ETC2 fallback中设置,
如果不支持ETC2,使用哪种压缩方式
ETC2 fallback:ETC2回退
当Unity用于不支持ETC2的安卓 ...
UH3L13——客户端热更新路径优化
UH3L13——客户端热更新路径优化
当前需要优化的问题
不同平台的特殊路径,读取表现是不同的:
Application.persistentDataPath
Application.streamingAssetsPath
UnityWebRequest或者WWW读取
C#文件流读取
UnityWebRequest或者WWW读取
C#文件流读取
PC
加 file:///
无需处理
加 file:///
无需处理
Android
加 file:///
无需处理
直接用
不可用
IOS
加 file:///
无需处理
加 file:///
无需处理
如果我们不对不同平台加以判断,修改读取逻辑,可能就在不同平台上读取出现问题,因此我们需要优化热更新路径的逻辑
多路测试
通过预处理器指令#if ... #elif ... #else .... #endif,可以选择性的编译C#部分代码
如果#if和#elif后边跟随的宏(或者说符号)被定义#define过,其与#endif包裹起来的代码就会被编译
如果#if和#e ...
UH3L12——工具窗口逻辑处理
UH3L12——工具窗口逻辑处理
前置知识点
UH3L3——生成AB包资源对比文件
UH3L4——上传AB包和信息文件
UH3L8——编辑器功能—设置默认资源
目标
将之前的编辑器功能整合到上节课创建的窗口中
将之前编写的静态方法移植到窗口类,然后在对应的按钮代码块里调用即可,但是需要进行如下的修改:
将静态方法改为私有方法
UploadABFile内,读取文件夹的路径需要根据平台页签的选择而动态改变
FtpUploadFile内,服务器的上传路径需要根据窗口输入的IP以及平台页签的选择而动态改变
CreateABCompareFile,读取文件夹和生成文件夹的路径需要根据平台页签的选择而动态改变
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 ...
UH3L11——编辑器窗口设计
UH3L11——编辑器窗口设计
前置知识点
IMGUI
Unity编辑器:EditorWindow、[MenuItem()]
目标
将之前的编辑器功能整合到一个窗口中,并且在工具窗口中添加一个IP地址输入框,平台选择页签
代码实现
假设我们要实现这样的一个窗口:
1234567891011121314151617181920212223242526272829303132333435363738394041using UnityEditor;using UnityEngine;public class ABTools : EditorWindow{ private int nowSelIndex = 0; private string[] targetStrings = new string[] { "PC", "IOS", "Android" }; private string serverIP = "ftp://127.0.0.1"; ...
UM1L2——旧版Unity打包安卓应用程序
UM1L2——旧版Unity打包安卓应用程序
Unity2019以下的版本,相对新版本的Unity来说更麻烦
我们需要自己下载安装设置 JDK、NDK、Android SDK
准备好了他们 再设置基础关键信息 才能发布安卓.apk后缀的应用安装程序
Unity2019以下版本 发布Android准备工作
Android构建支持工具安装(Unity提供下载,安装时需要关闭Unity)
JDK(Java开发工具包)(网络下载) JDK 必须是版本 8:Java Downloads | Oracle
NDK (本地开发工具包)(网络下载)NDK 版本必须是 Unity2018——r16b,Unity2017——r13d
注意:NDK是可选的工具,如果之后要发il2cpp的应用程序,那么NDK是必须的,如果是Mono可以不使用它
Android NDK下载(r10~ r26b) 持续更新-CSDN博客
NDK 下载 | Android NDK | Android Developers (google.cn)
Android SDK(安卓软件开发工具包)(网络下载或通 ...
UM1L1——新版Unity打包安卓应用程序
UM1L1——新版Unity打包安卓应用程序
Unity2019及以上发布Android准备工作
通过UnityHub安装Android平台相关工具
Android 构建支持
Android SDK(安卓软件开发工具包)、NDKTools(本地开发工具包)
OpenJDK(Java开发工具包)
这些是发布安卓应用程序必备内容,安装了他们,才能发布安卓应用程序
注意:Unity支持Android 5.1及以上版本
在这里检查是否安装了 Android 构建支持,如果安装了则Build Setting可以显示该界面:
如果没有安装,请到Unity hub上为编辑器添加 Android 构建支持
一切准备就绪后,请选择安卓平台并点击切换平台(Switch Platform)选项
注:如果报错,请试试看先把Visual Studio关闭后再重新切换
发布必修改的设置
在File —— Build Setting —— Player Setting中修改
公司名
游戏项目名
版本号
默认图标
Other Settings —— Packa ...
CS5L14——unsafe
CS5L14——unsafe
unsafe
Unity移动开发内涉及内容,这里将其补充到C#知识补充内,它本身不属于C#知识补充的课程
默认情况下,C#是不支持 指针 的,unsafe 关键词用于在C#表示不安全的上下文,
如果想要在C#中进行任何和指针相关的操作,就必须配合 unsafe 关键词使用。
何为指针
指针(Pointer,简称ptr)是计算机编程中一个重要的概念,它是一种特殊的数据类型,用于存储变量的内存地址。
简单来说,指针指向了一个变量在计算机内存中的存储位置。指针就是地址,地址就是指针
每个变量在内存中都有一个地址,在编程中,通过定义指针变量,我们可以存储一个变量的地址,
这就使得我们可以通过间接的方式操作和修改变量,而不需要访问原始的变量名。
在公共语言运行时(CLR)中,不安全代码是指无法验证的代码。
C# 中的不安全代码不一定是危险的,只是 CLR 无法验证该代码的安全性。
因此,CLR 将仅执行完全信任的程序集中的不安全代码。
如果你使用不安全代码,你应该负责确保代码不会引发安全风险或指针错误
关于CLR是什么,详情请见:CS5L1——.NE ...