UN5L6——Protobuf协议生成
UN5L6——Protobuf协议生成
本章代码关键字
1234Process //进程类,可以运行某个可执行程序,如同在cmd或者powershell运行一个程序那样process.StartInfo.FileName //可执行程序所在路径及其文件名process.StartInfo.Arguments //可执行程序执行时要输入的参数process.Start() //运行可执行程序
利用protoc.exe编译器生成脚本文件
打开cmd或powershell窗口(如果你使用VSCode,你可以直接使用它的终端)
进入protoc.exe所在文件夹(输入cd protoc.exe所在路径,或者可以直接将exe文件拖入cmd窗口中)
输入转换指令:protoc.exe -I=配置路径 --csharp_out=输出路径 配置文件名
注意:路径不要有中文和特殊符号,避免生成失败
Protobuf 通过配置生成脚本文件,主要使用的就是 protoc.exe可执行文件,我们需要记住对应的生成指 ...
UN5L5——Protobuf配置规则
UN5L5——Protobuf配置规则
本章代码关键字
12345678910111213141516171819202122232425262728293031323334353637383940// 注释方式1/* 注释方式2 可多行注释*/syntax = "proto3"; //决定了proto文档的版本号,如果不设置将默认是proto2package namespaceName //设置命名空间message messageName { } //声明消息类//字段说明示例成员类型 字段名 = 唯一编号;//成员类型//浮点数float //C# - floatdouble //C# - double//变长编码整数int32 //C# - int(不太适用于表示负数,如要负数请使用sint32)int64 ...
UEDL3-3——对象关联、各类型输入
UEDL3-3——对象关联、各类型输入
本章代码关键字
123456789101112EditorGUILayout.ObjectField() //在编辑器窗口上添加对象关联控件,可以关联一个Unity对象,需要配套一个Object变量EditorGUILayout.IntField() //在编辑器窗口上添加输入int值控件,需要配套一个Object变量EditorGUILayout.LongField() //在编辑器窗口上添加输入long值控件,需要配套一个long变量EditorGUILayout.FloatField() //在编辑器窗口上添加输入float值控件,需要配套一个float变量EditorGUILayout.DoubleField() //在编辑器窗口上添加输入double值控件,需要配套一个double变量EditorGUILayout.TextField() //在编辑器窗口上添加输入字符串的控件,需要配套一个字符串变量EditorGUILayout ...
UEDL3-2——枚举、选择、按下按钮
UEDL3-2——枚举、选择、按下按钮
本章代码关键字
1234EditorGUILayout.EnumPopup() //单选枚举选择,将枚举作为选项一样可以选择,需要配套一个枚举变量EditorGUILayout.EnumFlagsField() //多选枚举选择,枚举作为多选项,但是枚举需要声明与多选对应的搭配值,否则无法准确转换枚举值,需要配套枚举变量EditorGUILayout.IntPopup() //整数选择控件,由字符串数组决定选项显示内容,整数数组决定选项的值,选中哪个选项返回哪个值EditorGUILayout.DropdownButton() //在窗口上绘制一个显示类似于下拉菜单的按下按钮,按下就触发(按住不算)
枚举选择控件
单选枚举选择
EnumPopup在窗口上添加了一个选择某个枚举选项的控件,同样,需要配套一个枚举变量来表示选中了哪个枚举,
需要将该变量传入到方法内,再由该变量接收本帧用户选中的枚举(需要强转为对应的枚举)
参数一:文本标题(可选,可改为GUIContent)
参数 ...
UEDL3-1——EditorGUI的文本、层级和标签、颜色
UEDL3-1——EditorGUI的文本、层级和标签、颜色
本章代码关键字
12345//以下控件都可以使用EditorGUI绘制,但是需要自己指定位置与大小!EditorGUILayout.LabelField() //在窗口上添加文本控件,可以显示标题和内容EditorGUILayout.LayerField() //在窗口上添加选择哪个层级(Layer)的选项控件,需要配套一个int变量EditorGUILayout.TagField() //在窗口上添加选择哪个标签(Tag)的选项控件,需要配套一个字符串变量EditorGUILayout.ColorField() //在窗口上添加选择哪个颜色(Tag)的控件,需要配套一个Color变量
文本控件
LabelField可以在窗口上显示文本
参数一:文本标题(可选,可改为GUIContent)
参数二:文本内容(必填,可改为GUIContent)
参数三:GUIStyle(可选)
参数四:GUILayoutOption(使用EditorGUI绘制时可选)
12345private ...
UEDL3——EditorGUI相关
UEDL3——EditorGUI相关
EditorGUI & EditorGUILayout
EditorGUI 类似 GUI,是一个主要用于绘制编辑器拓展 UI 的工具类
它提供了一些 GUI 中没有的API,主要是 编辑器功能中会用到的一些 特殊控件
我们经常会将 EditorGUI 和 GUI 混合使用 来制作一些编辑器拓展功能,但是由于更多时候我们会用到自动布局功能
因此我们接下来着重讲解 EditorGUILayout 中的功能,EditorGUI 和它的区别仅仅是需要自己设置位置而已
以下窗口中的控件相关绘制 逻辑处理相关的内容,EditorGUI相关的控件,同样还是需要在OnGUI()当中进行实现 才能被显示出来
GUILayout 相关知识点回顾:UG1L10——GUILayout
关于EditorGUILayout的更多控件详细内容:EditorGUILayout - Unity 脚本 API
本章包括以下内容:
文本、层级和标签、颜色
枚举、选择、按下按钮
对象关联、各类型输入
折叠、折叠组
开关、开关组
滑动条、双滑块滑 ...
UEDL2——自定义窗口拓展
UEDL2——自定义窗口拓展
本章代码关键字
12345678910111213141516171819202122EditorWindow //编辑器窗口基类,所有的编辑器窗口类都必须继承它//继承EditorWindow的窗口类,会自带一些事件回调函数,当触发对应事件时会自动进入OnHierarchyChange() { } //当场景中的层次结构(Hierarchy)发生变化时调用OnFocus() { } //当窗口获得焦点时调用OnLostFocus() { } //当窗口失去焦点时调用OnProjectChange() { } //当项目资源发生变化时调用OnInspectorUpdate() { } //在检视 ...
UEDL1——自定义菜单栏拓展
UEDL1——自定义菜单栏拓展
本章代码关键字
12[MenuItem()] //为菜单栏、Hierarchy窗口(GameObject页签内)、Project窗口(Assets页签内)、以及某个脚本的右键菜单添加页签[AddComponentMenu()] //添加代码添加页签,使脚本可以通过Component菜单中的选项添加脚本
特殊文件夹Editor
我们之前在学习Unity相关知识点时学习过,Editor文件夹是Unity中的特殊文件夹,
所有Unity中编辑器相关的脚本都需要放置在其中
我们在本套课程学习中,会频繁的使用到UnityEditor等命名空间,
这些使用了Unity编辑器相关命名空间的脚本最终是不能被打包出去的
我们需要把这些脚本放置到Editor文件夹中,避免打包时报错
Unity添加自定义页签
以前记录过该知识点:[MenuItem()],这里重新记录并扩充,无需再看旧记录
该特性可以为菜单栏、Hierarchy窗口(GameObject页签内)、Project窗口(Assets页签内)、以及某个脚本的右键菜单添加选项
在Un ...
UED——Unity编辑器拓展
UED——Unity编辑器拓展
前置知识:C#,Unity前三部曲,IMGUI,UGUI
Unity编辑器拓展
学习Unity编辑器拓展的主要用处就是制作开发工具,提升我们的游戏开发效率
我们可以把一些常用的工作流程工具化
数据可视化 (在Scene窗口实时查看数据表现)
辅助功能开发 (对资源进行二次处理)
游戏工具开发(地图编辑器、数据编辑器、技能编辑器等等)
等等
Unity编辑器拓展相关更多的只是一些辅助性功能,编辑器开发的重点是要更具游戏需求来开发提升效率的辅助工具
比如:技能编辑器、地图编辑器、剧情编辑器、关卡编辑器 等等,开发这些工具的难点其实不在于编辑器拓展相关API的使用
而是在于具备的编程能力,如果能够独立开发出游戏中的这些相关系统,那么编辑器开发会是一门信手拈来的技能
编辑器拓展的更多内容:
UnityEditor - Unity 脚本 API(中文文档,缺少对其命名空间下各个类的解释)
Unity - Scripting API: UnityEditor (unity3d.com)(英文文档)
本系列学习内容
自定义菜单栏拓展
自定义窗口拓展 ...
UN5L4——Protobuf
UN5L4——Protobuf
Protobuf
Protobuf全称是protocol-buffers(协议缓冲区),是谷歌提供给开发者的一个开源的协议生成工具
它的主要工作原理和我们之前做的自定义协议工具类似,只不过它更加的完善,可以基于协议配置文件生成
C++、Java、C#、Objective-C、PHP、Python、Ruby、Go等等语言的代码文件
它是商业游戏开发中常常会选择的协议生成工具,有很多游戏公司选择它作为协议工具来进行网络游戏开发
因为它通用性强,稳定性高,可以节约出开发自定义协议工具的时间
protocol-buffers官网:Protocol Buffers Documentation (protobuf.dev)
Protobuf的使用流程
下载对应语言要使用Protobuf相关内容
根据配置规则编辑协议配置文件
用Protobuf编译器,利用协议配置文件生成对应语言的代码文件
将代码文件导入工程中进行使用
下载Protobuf相关内容——生成DLL文件
在官网中前往下载地址,protocol-buffers官网:Protocol Buffers ...