UEDL10——Gizmos公共类
UEDL10——Gizmos公共类
本章代码关键字
Gizmos类
Gizmos和Handles一样,是用来让我们拓展Scene窗口的
而Gizmos相对Handles来说,它主要专注于绘制辅助线、图标、形状等
而Handles主要用来绘制编辑器控制手柄等
关于Gizmos类更多具体消息:
Gizmos - Unity 脚本 API(中文文档,翻译缺失较多)
Unity - Scripting API: Gizmos (unity3d.com)(英文文档)
Gizmos响应函数
在继承MonoBehaviour的脚本中实现以下函数,便可以在其中使用Gizmos来进行图形图像的绘制(因此,脚本不能放到Editor文件夹内)
OnDrawGizmos():在每帧调用,绘制的内容随时可以在Scene窗口中看见
OnDrawGizmosSelected():仅当脚本依附的GameObject被选中时才会每帧调用绘制相关内容
123456789101112public class Lesson33 : MonoBehaviour{ priva ...
UEDL9——HandleUtility公共类
UEDL9——HandleUtility公共类
本章代码关键字
1HandleUtility.WorldToGUIPoint()
HandleUtility公共类
HandleUtility 是 Unity 中的一个工具类
用于处理场景中的编辑器句柄(Handles)以及其他一些与编辑器交互相关的功能
它提供了一系列静态方法,用于处理编辑器中的鼠标交互、坐标转换以及其他与Handles相关的功能
HandleUtility的更多内容可看:
HandleUtility - Unity 脚本 API(中文文档,翻译缺失较多)
Unity - Scripting API: HandleUtility (unity3d.com)(英文文档)
回顾如何获取窗口上鼠标位置
具体可看:Event.current.mousePosition
HandleUtility类中的常用API
HandleUtility.GetHandleSize(Vector3 position)
我们之前已经使用过的API,具体可看HandleUtility.GetHandleSize()。用于 ...
UEDL8-5——显示GUI
UEDL8-5——显示GUI
本章代码关键字
123Handles.BeginGUI()Handles.EndGUI()SceneView.currentDrawingSceneView.position
Scene中显示GUI
需要使用两个方法,Handles.BeginGUI(),Handles.EndGUI(),
在两个方法之间编写GUI绘制代码即可
123456789private void OnSceneGUI(){ Handles.BeginGUI(); if (GUILayout.Button("测试按钮")) { Debug.Log("Scene中的按钮响应"); } Handles.EndGUI();}
显示效果:
获取Scene窗口大小
获取当前Scene窗口信息:SceneView.currentDrawingSceneView
它继承自EditorWindow,因此通过position属性(Rect)就能得到它的大小
这个属性 ...
UEDL8-4——自由移动、自由旋转
UEDL8-4——自由移动、自由旋转
本章代码关键字
123HandleUtility.GetHandleSize() //该方法需要传入一个位置,返回一个float值,该值可以用于缩放,使绘制在Scene窗口上的内容相对于摄像机的大小不变Handles.FreeMoveHandle() //为点或者对象添加自由移动的控制器Handles.FreeRotateHandle() //为点或者对象添加自由旋转的控制器
让句柄(控制器)在Scene窗口上显示的大小恒定
HandleUtility.GetHandleSize()方法用于获取在 Scene 窗口中的一个单位距离所对应的屏幕空间大小
这个方法主要用于根据物体的距离来动态调整控制手柄的大小,使其在不同距离下能够在视图中显示合适的大小
一般我们把对象位置传递进去,他会自动得到一个句柄大小
简单来说,该方法需要传入一个位置,根据这个位置与摄像机的距离返回一个float值,该值可以用于控制缩放,
使得某个绘制在Scene窗口上的内容相对于摄像机的大小不变,无论其距离摄像机多远
例如下面的这段代码,使 ...
UEDL8-3——移动、旋转、缩放
UEDL8-3——移动、旋转、缩放
本章代码关键字
1234567Handles.PositionHandle() //为某个点加上移动轴,方便在Scene窗口上控制其位移Handles.DoPositionHandle() //同上Handles.RotationHandle() //为某个点加上旋转轴,方便在Scene窗口上控制其旋转Handles.DoRotationHandle() //同上Handles.ScaleHandle() //为某个点加上缩放轴,方便在Scene窗口上控制其缩放Handles.DoScaleHandle() //同上HandleUtility.GetHandleSize() //获取给定位置的操纵器控制柄的世界空间大小,使用当前相机计算合适的大小,需要其返回值需要传入添加缩放轴的方法内
Handles中的移动轴
移动轴指的是Scene窗口上用于移动对象位置的三个箭头:
移动轴有两个API, ...
UEDL8-2——弧线、圆、立方体,几何体
UEDL8-2——弧线、圆、立方体,几何体
本章代码关键字
123456Handles.DrawWireArc() //绘制弧线Handles.DrawSolidArc() //绘制扇形Handles.DrawWireDisc() //绘制线框圆Handles.DrawSolidDisc() //绘制填充圆Handles.DrawWireCube() //绘制线框立方体Handles.DrawAAConvexPolygon() //绘制平面多边形
Handles中的弧线和扇形
绘制线框弧线:Handles.DrawWireArc(圆心, 法线, 绘制朝向, 角度, 半径);
绘制填充弧线(扇形):Handles.DrawSolidArc(圆心, 法线, 绘制朝向, 角度, 半径);
参数如下:
参数一:圆心位置(需要注意传入的位置是基于世界坐标系还是自身坐标系的,它会影响对象移动时绘制的效果)
参数二:绘制弧线所在平面的法线(需要注意传入的法线是基于世界坐标系还 ...
UEDL8-1——文本、线段、虚线
UEDL8-1——文本、线段、虚线
本章代码关键字
123456Handles.color //设置在Scene窗口上绘制内容时使用的颜色,对绘制文字不起作用Handles.Label() //文本控件,在Scene窗口上绘制文本Handles.DrawLine() //线段控件,在Scene窗口上绘制线段Handles.DrawLines() //多段线段控件,在Scene窗口上绘制多段的线段Handles.DrawDottedLine() //虚线控件,在Scene窗口上绘制虚线Handles.DrawDottedLines() //多段虚线控件,在Scene窗口上绘制多段的虚线
Editor中的target成员
我们可以利用继承Editor基类中的target成员获取到拓展的组件对象
例如我们要获取Lesson26依附的GameObject的位置
1234567891011121314151617181920using UnityEditor;using U ...
UM4L3——获取SDK完成准备工作
UM4L3——获取SDK完成准备工作
下载SDK
网址:Android定位SDK | 百度地图API SDK (baidu.com)
根据自身需求,选择合适功能的SDK进行下载
为了方便接入,我们下载jar包
完成第三方平台账号注册
按照此网页的要求注册并获取密钥即可:Android定位SDK | 百度地图API SDK (baidu.com)(强烈建议使用注册选择个人开发者!)
生成对应密钥
首先在控制台创建应用:
根据SDK说明文档中教程获取对应的SHA码,使用终端获取SHA1码
如果提示错误信息(keytool找不到),尝试使用命令控制台,进入Android Studio安装路径下的\jre\bin\中使用指令
然后将包名和SHA1码输入:
得到AK码,使用SDK前输入该密钥即可正常使用SDK,
UM4L2——接入所有第三方SDK的套路
UM4L2——接入所有第三方SDK的套路
接入所有第三方SDK的套路
阅读官方接入文档
合作方提供
官方网站获取
按照接入文档中内容进行操作
依赖配置、权限配置等
API使用说明
接入过程中,根据报错解决问题
注意:
若第三方提供针对Unity的SDK直接使用即可,一般不需要创建交互项目
若没有提供,一般都是针对Android和IOS单独的支持,需要创建交互项目
UM4L1——交互项目创建
UM4L1——交互项目创建
注意:本章所有知识点均为UM3L1——交互项目创建中内容
由于我们要在Android平台集成第三方的SDK
因此自然联想到,我们需要Unity和Android之间进行交互,需要在Unity端调用Android端开发好的东西
所以我们需要创建交互项目,之后就在Android交互项目中引入第三方SDK进行逻辑开发
创建Unity和Android Studio项目
创建Unity项目后,切换到Android平台,设置包名和Android版本
设置流程参考:UM1L1——新版Unity打包安卓应用程序
创建Android Studio
选择 Phone and Tablet,创建一个Empty Activity项目
注意:
包名和Minimum SDK版本要和Unity项目一致,若没有相同SDK版本,请在Android Studio中下载
创建完成后,等待加载结束后,删除工程中两个Test项目以及res下的无用资源
配置build.gradle文件
在Android Studio中Project页签中切换为Projec ...