Unity初级
Unity初级
Go_Accepted
这个作者很懒,什么都没留下…
展开
-
Unity打包基础(未完)
x86——32位CPUx86_64——64位CPUDefault——不压缩LZ4——快速压缩格式。原创 2022-09-12 21:48:55 · 919 阅读 · 0 评论 -
小地图的生成
小地图的生成原创 2022-09-10 15:55:14 · 151 阅读 · 0 评论 -
Unity 的随机数和委托
Unity的Random在UnityEngine命名空间中整形规则是:左包含,右不包含浮点规则是:左右都包含 C#中的随机数注意,不能直接using System;否则会和UnityEngine命名空间冲突报错 Unity自带委托需要引用命名空间:UnityEngine.EventsPs:Unity没有提供类似C#的Func类型有返回值的委托......原创 2022-07-07 11:35:34 · 886 阅读 · 0 评论 -
Unity 鼠标操作
Unity 鼠标操作原创 2022-07-07 11:10:22 · 1351 阅读 · 0 评论 -
麦克风输入相关
1、获取设备麦克风信息2、开始录制3、结束录制4、获取音频数据用于存储或者传输public class MicrophoneTest: MonoBehaviour { private AudioClip clip; private void Start() { #region 获取设备麦克风信息 // 得到麦克风设备的名字 string[] strs = Microphone.devices; for (in原创 2022-05-08 21:10:39 · 904 阅读 · 0 评论 -
代码控制音频源
1、代码控制播放停止public class AudioTest : MonoBehaviour{ AudioSource audioSource; private void Start() { audioSource = this.GetComponent<AudioSource>(); } private void Update() { if (Input.GetKeyDown(KeyCode.A)) { .原创 2022-05-08 20:46:58 · 341 阅读 · 0 评论 -
音频源和音频监听脚本
1、AudioSource音频源脚本组件AudioClip 声音剪辑文件(音频文件) Output 默认将直接输出到场景中的音频监听器(Camera上的监听器),可以更改为输出到混音器 Mute 静音开关 Bypass Effect 开关滤波器效果 Bypass Listener Effects 快速开关所有监听器 Bypass Reverb Zones 快速开关所有.原创 2022-05-08 20:12:56 · 768 阅读 · 0 评论 -
音频文件导入
1、常用格式wav,MP3,ogg,aiff2、音频文件属性设置Force To Mono 多声道转单声道 Normalize:强制为单声道时,混合过程中被标准化 Load In Background 在后台加载,不阻塞主线程,适用较大的音效 Ambisonic 立体混响声,非常适合360度视频和XR应用程序,如果音频文件包含立体混响声编码的音频,启用此选项 Load Type 加载类型 Decompress On Load:.原创 2022-05-08 17:12:43 · 499 阅读 · 0 评论 -
向量相关 知识点
1、向量二维 / 三维向量——Vector2 / Vector3Vector3有两种集合意义(1)位置:代表一个点(2)方向:代表一个方向2、两点决定一向量// A和B此时是两个点Vector3 A = new Vector3(x1,y1,z1)Vector3 B = new Vector3(x2,y2,z2)// 求向量Vector3 AB = B - A;Vector3 BA = A - B;可用于得到两个物体相互的方向向量3、零向量和负向量.原创 2022-03-29 22:27:33 · 2320 阅读 · 0 评论 -
坐标系知识点
1、世界坐标系原点:世界的中心点轴向:世界坐标系的三个轴向是固定的this.transform.position;this.transform.rotation;(四元数)this.transform.eulerAngles;(欧拉角)this.transform.lossyScale;2、物体坐标系原点:物体的中心点(建模时决定)轴向:右方——x轴正方向;上方——y轴正方向;前方——z轴正方向// 相对父对象的物体坐标系的位置,本地坐标,相对坐标this.t原创 2022-03-28 22:24:34 · 1504 阅读 · 0 评论 -
三角函数知识点
1、角度和弧度角度:弧度:圆一周的角度/弧度:// 角度和弧度的转换关系rad =====> ; rad所以:弧度*57.3 = 对应角度角度*0.01745 = 对应弧度(1)弧度转角度float rad = 1f;float angle = rad * Mathf.Rad2Deg;(2)角度转弧度angle = 1;rad = angle * Mathf.Deg2Rad2、三角函数正弦、余弦、正切.....// 注...原创 2022-03-28 20:43:10 · 1788 阅读 · 0 评论 -
Mathf知识点
Mathf与C# 中的Math几乎一样,Math是C#自带的工具类,主要就提供一些数学相关计算方法,Mathf是Unity专门封装的,不仅包含Math中的方法,还多了一些适用于游戏开发的方法常用方法——一般计算一次1、圆周率——Mathf.PI2、取绝对值——Mathf.Abs3、向上取整——Mathf.CeilToInt4、向下取整——Mathf.FloorToInt5、钳制函数——Mathf.Clamp(value, min, max),判断一个数的范围,在[min,max]原创 2022-03-28 20:23:22 · 4613 阅读 · 0 评论 -
碰撞检测之刚体加力
1、刚体自带添加力的方法给刚体加力的目标就是让其有一个速度,朝向某一个方向移动(1)首先应该获取刚体组件Rigidbody rbody = this.GetComponent<Rigidbody>();(2)添加力// 相对世界坐标// 世界坐标系,Z轴正方向加了一个力// 加力后对象是否停止移动,是由阻力(刚体组件的Drag)决定的,如果阻力为0,那给了一个力过后始终不会停止运动,或者如果希望即使有阻力,也希望对象一直运动,那么在Update中执行即可rb.原创 2022-03-26 17:22:20 · 858 阅读 · 0 评论 -
碰撞检测之碰撞检测函数
如何让两个游戏物体之间产生碰撞——至少一个刚体和两个碰撞器如何让两个物体之间碰撞时表现出不同效果——通过物理材质触发器的作用是:让两个物体碰撞没有物理效果,只进行碰撞处理注意:碰撞和触发响应函数,属于特殊的生命周期函数,也是通过反射调用(在FixedUpdate与Update之间——OnTriggerXXX),触发响应的频率与物理帧更新频率相关1、物理碰撞检测相响应函数// Collision类型的参数包含了碰到自己的对象的相关信息// 关键参数——碰撞到的对象碰撞器的.原创 2022-03-26 15:47:35 · 2266 阅读 · 0 评论 -
碰撞检测之物理材质
1、创建物理材质Project窗口的"+"(右键,Create)——>Physical Material2、物理材质参数(1)Dynamic Friction:已在移动时使用的摩擦力。通常为【0~1】之间的值。值为0就像冰一样,值为1将使对象迅速静止(除非用很大的力或重力推动对象)(2)Static Friction:当对象静止在表面上时使用的摩擦力。通常为【0~1】之间的值,值为0就像冰一样,值为1将导致很难让对象移动(3)Bounciness:表面的弹性如.原创 2022-03-26 15:34:28 · 779 阅读 · 0 评论 -
物理系统之碰撞检测——碰撞器
碰撞器:表示物体的体积与形状,刚体利用体积进行碰撞计算,模拟碰撞效果1、3D碰撞器的种类(1)盒状(2)球状(3)胶囊(4)网格(5)轮胎(6)地形2、共同参数(1)Is Trigger:是否是触发器,如果启用此属性,则该碰撞体将用于触发事件,并被物理引擎忽略,主要用于进行没有物理效果的碰撞检测eg:人被羽箭攻击后不会后退等物理效果,但是会进行碰撞检测失血等操作(2)Material:物理材质,可以确定碰撞体和其他对象碰撞时的交互(表现)方式eg:在冰面上的滑动物理效果.原创 2022-03-24 22:29:17 · 1734 阅读 · 0 评论 -
物理系统之碰撞检测——刚体
碰撞产生的必要条件,两个物体都有碰撞器,至少一个物体有刚体RigidBody组件信息:刚体让物体可以模拟受到力的作用注意:两个物体A去推B,B被推开,是因为B有刚体属性受力的作用,能进行体积的计算从而被推动,而A即使没有刚体属性也有可能推动B1、Mass:质量(默认为千克),质量越大惯性越大,即当前状态更不容易改变eg:轻的A去推重的B很难,反过来很容易2、Drag:空气阻力,根据力移动对象时影响对象的空气阻力大小,0表示没有空气阻力(相对位移的空气阻力)3、Angul.原创 2022-03-23 20:13:33 · 935 阅读 · 0 评论 -
光相关面板
进入设置:Window->Rendering->Lighting Settings1、Environment:环境相关设置(1)Sky Material:天空盒材质,可以改变天空盒(2)Sun Source:太阳来源,不设置会默认使用场景中最亮的方向光代表太阳(3)Environment Lighting:环境光设置// Source:环境光光源颜色Skybox:天空盒材质作为环境光颜色;Gradient:可以为天空、地平线、地面单独选择颜色盒他们之间混合.原创 2022-03-23 20:07:01 · 372 阅读 · 0 评论 -
光源组件 知识点
1、Type:光源类型(1)Spot:聚光灯参数:Range——发光范围距离(点光源也有)Spot Angle——光锥维度(2)Directional:方向光(环境光)(3)Point:点光源(4)Area:面光源(只会在烘焙状态下有用)2、Color:颜色3、Mode:光源模式(1)Realtime:实时光源,每帧实时计算,效果好,性能消耗大(2)Baked:烘焙光源,事先计算好,无法动态变化(3)Mixed:混合光源,预先计算+实时运算4.原创 2022-03-22 20:33:57 · 724 阅读 · 0 评论 -
Camera代码相关
1、重要的静态成员(1)获取摄像机// 主摄像机的获取(场景中一定要有摄像机的tag是MainCamera,若有两个随意获取其中一个,但一般不会有两个)--->Camera.main.****Camera.main.name// 获取摄像机的数量Camera.allCameraCount// 得到所有摄像机Camera[] allCamera = Camera.allCameras;(2)渲染相关委托(c为Camera类型的参数)// 摄像机剔除前处理的.原创 2022-03-21 20:49:26 · 640 阅读 · 0 评论 -
Camera可编辑参数
1、ClearFlags:如何清楚背景(1)Skybox:3D游戏,天空地面分离(2)Solid Color:2D游戏,颜色填充(性能稍好)(3)Depth only:多个摄像机叠加渲染,只画该层,背景透明(4)Don't Clear:几乎不用,不移除上一帧渲染的内容,覆盖渲染2、Culling Mask:选择性渲染部分层级(Layer)可以指定只渲染对应层级的对象3、Projection(1)Perspective(透视模式,人眼效果)FOV Axis:视场角.原创 2022-03-21 20:13:38 · 1217 阅读 · 0 评论 -
物体随鼠标位置旋转
1、获得鼠标位置Vector3 mousePos = Input.mousePosition;2、首先屏幕是二维的,因此需要将物体的位置转换为屏幕坐标Vector3 pos = Camera.main.WorldToScreenPoint(transform.position);3、要计算相关角度,这里要分清楚方向,最简单的方式就是一开始让对象背对摄像机,即z轴向前,否则旋转方向与鼠标位置不一致,需要进行角度的转换才能正确显示,此处以最简单的方式讨论:通常是将游戏对象作为原点原创 2022-03-19 14:42:39 · 899 阅读 · 0 评论 -
屏幕相关Screen知识点
1、静态属性(1)常用// 当前分辨率(自己设备的分辨率)Rosolution r = Screen.currentResolution;当前屏幕分辨率的宽、高:r.width/r.height// 屏幕窗口当前宽高(Game窗口的宽高),一般写代码要用Gamec窗口宽高调试Screen.width/Screen.height// 屏幕休眠模式Screen.sleepTimeout = SleepTimeout.NeverSleep / SleepTimeout.Sy.原创 2022-03-17 16:51:53 · 853 阅读 · 0 评论 -
Input鼠标键盘输入
// 注意:输入相关内容肯定是写在Update中的1、鼠标再屏幕的位置// 屏幕坐标的原点是在屏幕的左下角,往右是x轴正方向,往上是y轴正方向,返回值是Vector3,但是只有x,y有值,z一直是0,是因为屏幕本来就是2D的,不存在Z轴Input.mousePosition()2、检测鼠标输入// 鼠标按下相关检测,对于我们来说,可以来作:(1)发射子弹(2)控制摄像机移动// 只有鼠标按下一瞬间才触发一次// 0左键,1右键,2中键Input.GetMou原创 2022-03-17 16:24:59 · 1326 阅读 · 0 评论 -
Transform坐标转换
1、世界坐标转本地坐标// 帮助大概判断一个相对位置// 世界坐标系的点转为相对本地坐标系的点// 受缩放影响this.transform.InverseTransformPoint(Vector3.forward)// 世界坐标系的方向转换为相对本地坐标系的方向(方向不变,只是将方向向量平移到本地坐标系)// 不受到缩放影响this.transform.InverseTransformDirection(Vector3.forward)// 受缩放影响t.原创 2022-03-17 15:38:10 · 573 阅读 · 0 评论 -
Transform父子关系
1、获取和设置父对象// 获取父对象this.transform.parent // 得到父对象的Transformthis.transform.parent.name // 得到父对象的名字// 设置父对象this.transform.parent = null; // 断绝父子关系this.transform.parent = GameObject.Find(父名字).transform; // 认爸爸// 通过API进行父子关系的设置// 参数一:父亲关系.原创 2022-03-17 15:06:15 · 1306 阅读 · 0 评论 -
Transform缩放和看向
1、缩放// 相对世界坐标系this.transform.lossyScale// 相对本地坐标系(父对象)this.transform.localScale// 注意:(1)同样缩放不能只改xyz,只能一起改(相对于世界坐标系的缩放大小只能读取,不能修改),所以我们一般要修改缩放大小都是改的相对于父对象的缩放大小:localScalethis.transform.localScale = new Vector3(2,2,2);(2)Unity没有提供关于缩放的API.原创 2022-03-17 14:07:05 · 1924 阅读 · 0 评论 -
Transform角度和旋转
1、角度相关// 相对时间坐标的角度this.transform.eulerAngles(与Inpector界面显示的相同,this.transform.rotation是四元数,显示的不一样)// 相对于父对象的角度this.transform.localEulerAngles// 注意:设置角度与设置位置一样,不能单独设置xyz,要一起设置。如果希望改变的角度是Inpector界面显示的内容,一定是改变相对父对象的角度2、旋转相关// 方式一:自己计算,.原创 2022-03-17 10:41:40 · 1373 阅读 · 0 评论 -
Vector3基础和Transform位置
游戏对象(GameObject)位移、旋转、缩放、父子关系、坐标转换等相关操作都由Transform处理1、Vector3基础Vector3主要用来表示三维坐标系中的一个点或者一个向量// 声明:(1)Vector3 v = new Vector3();(2)只传xy,默认z是0Vector3 v = new Vector3(x,y)(3)Vector3 v = new Vector3(x,y,z)// Vector3的基本运算:四则运算// 常用(世界坐标的朝向原创 2022-03-16 22:57:31 · 3418 阅读 · 0 评论 -
时间Time知识点
// 主要用于游戏中参与位移、计时、时间暂停等1、时间缩放比例// 时间停止Time.timeScale = 0;// 回复正常Time.timeScale = 1;// 2倍速Time.timeScale = 2;2、帧间隔时间// 帧间隔时间:最近的一帧用了多长时间(秒),每一帧耗时都不同// 注意,在Unity中都是以最快速度运行,但在实际情况下需要代码控制帧率,// 否则对CPU性能消耗很大// 帧间隔时间主要用于计算位移:路程=时原创 2022-03-16 19:59:45 · 708 阅读 · 0 评论 -
GameObject知识点
1、GameObject中的成员变量// 名字this.gameObject.name// 是否激活this.gameObject.activeSelf// 是否为静态this.gameObject.isStatic// 层级this.gameObject.layer(返回int类型,层级前面的标号)// 标签this.gameObject.tag(返回string类型)// transformthis.transform,通过Mono去得到的依附对象的G.原创 2022-03-16 19:39:13 · 1414 阅读 · 0 评论 -
MonoBehaviour中的重要内容
1、重要成员(1)获取依附的GameObject:即成员变量gameObject(.name获取物体名字)(2)获取依附的GameObject的位置信息(gameObject.) transform(.positon 位置信息/ .eulerAngle 角度信息/ .lossycale 缩放大小)(3)获取脚本是否激活this.enabled = true/false;(this可以替换成其他绑定对象,如otherScript(.gameObject/.transform/.原创 2022-03-15 17:28:17 · 769 阅读 · 0 评论 -
Inspector窗口可编辑的变量
1、私有和保护无法显示编辑,通过加上强制序列号字段特性[SerializedField]即可以让私有和保护的变量也可以被显示(序列化即把一个对象保存在一个文件或数据库字段)2、public可以直接显示,通过加上特性[HideInInspector]可以不让其显示3、大部分类型都能显示编辑,但是如字典、自定义类型(结构体、类)不能显示。当加上特性[System.Serializable],自定义类型可以被访问。字典怎么都不能显示编辑。4、辅助特性:(1)分组说明特性 Heade原创 2022-03-15 16:42:50 · 437 阅读 · 0 评论 -
Unity生命周期函数
生命周期函数的访问修饰符一般为private或者protected,支持继承多态按照调用顺序:Awake:当对象(脚本对应的类对象)被创建时,才会调用该生命周期函数。类似构造函数,一个对象只会调用一次,在一个类对象刚创建时进行一些初始化操作。是否调用与脚本是否激活无关,与GameObject激活有关(未激活不调用),而在Awake调用之前,所有GameObject对象都已经创建完成,可以在Awake中通过Find方法找到对应的物体。打印信息:Debug.Log/Debug.LogErro原创 2022-03-15 16:08:34 · 1202 阅读 · 0 评论