在 Unity 中,PlayOneShot() 是 AudioSource 组件提供的一个重要方法,专门用于播放短音效,尤其适合需要频繁繁播放且不需要复杂控制的音频(如按钮点击、物品拾取以及脚步声音等)
核心特点:
不中断现有播放:调用 PlayOneShot() 时,不会停止当前正在播放的音频,而是叠加播放新音效。
无需设置 AudioClip:直接在方法参数中指定要播放的 AudioClip,不影响 AudioSource 本身的 clip 属性。
自动结束:播放完成后不会保留状态,也不会触发 isPlaying 等状态标识。
轻量级:资源消耗低,适合高频次调用。
与 Play() 的区别:
特性
PlayOneShot()
Play()
对当前播放的影响
不中断,可叠加播放
会停止当前播放的音频
音频片段来源
方法参数指定(临时)
使用 AudioSource.clip 属性
播放完成后的状态
无残留状态
isPlaying 会变为 false
适用场景
短音效、频繁播放(如 UI 交互)
长音频、需要控制(如背景音乐)
支持暂停 / 停止
...
场景切换有两种创建场景的方法: 通过File菜单选择New Scene 在项目文件夹右键选择Create→Scene
1234//需要引用UnityEngine.SceneManagement命名空间using UnityEngine.SceneManagementSceneManager.LoadScene("场景名");//直接使用此方法可能会报错,需要先将场景添加到场景列表中
添加方式:通过File→Build Settings打开面板,点击”Add Open Scenes”添加当前打开的场景直接将场景文件拖入Build Settings面板的Scenes In Build列表
退出游戏通常绑定到ESC键或退出按钮,在Unity编辑器中运行时无效,仅在发布后的游戏中生效
1Application.Quit();
鼠标隐藏锁定隐藏鼠标主要用于第一人称射击游戏等不需要显示鼠标指针的场景。
1Cursor.visible = false;
锁定鼠标可以将其固定在屏幕中心或窗口范围内,增强游戏沉浸感。
12Cursor.lockState = Cur ...
光源组件面板控制Type光源类型
Spot(聚光灯)
Range(发光范围)
Spot Angle(光锥角度)
Direction(方向光)
Point(点光源)
Area(面光源)
Color颜色
Mode光源模式
Realtime
实时光源
每帧实时计算,效果好,但是性能消耗大
Baked
烘焙光源
事先计算好,无法动态变化
Mixed
混合光源
预先计算+实时运算
Intensity光源亮度
Indirect Multiplier改变间接光的强度低于1,每次反弹会使光更暗大于1,每次反弹会使光更亮
Shadow Type
NoShadows——关闭阴影
HardShadows——生硬阴影
SoftShadows——柔和阴影
RealtimeShadowsStrength——阴影暗度0~1,越大越黑Resolution——阴影贴图渲染分辨率,越高越逼真,消耗越高Bias——阴影推离光源距离Normal Bias——阴影投射面沿法线收缩距离Near Panel——渲染阴影的近裁剪面
Cookie投影遮罩
Cookie SizeDraw Halo球形光环开关
...
最小单位GameObject成员变量
123456789101112print(this.gameObject.name);this.gameObject.name = "带土";//是否激活print(this.gameObject.activeSelf);//是否静态print(this.gameObject.isStatic);//层级print(this.gameObject.layer);//标签print(this.gameObject.tag);//transformprint(this.gameObject.transform.position);
GameObject中的静态方法只要得到了一个GameObject对象,就可以得到它身上的所有脚本信息。
1234//创建自带几何体GameObject obj = GameObject.CreatePrimitive(PrimitiveType.Cube);obj.name = "11";obj.GetComponent();
查找对象123456789101112//通过对象名 ...
脚本基本规则
不在Vs中创建
可以放在Assets文件夹的任何位置中(建议同一文件夹)
类名和文件名必须一致,不然不能挂载
建议不要使用中文名命名
没有特殊要求不用管命名空间
创建的脚本默认继承MonoBehavior
MonoBehavior基类:
创建的脚本默认都继承了MonoBehavior,只有这样才能挂载在对象上
继承MonoBehavior的脚本不能new只能挂
继承了MonoBehavior的脚本不要去写构造函数,因为我们不会去new它,写构造函数没有意义
继承了MonoBehavior的脚本可以在一个对象上挂多个脚本(如果没有加DisallowMultipleComponent特性)
继承了MonoBehavior的类也可以再次被继承,遵循面向对象继承多态的规则
不继承MonoBehavior的类:
不继承MonoBehavior的类不能挂载到GameObject上
不继承MonoBehavior的类想怎么写就怎么写,如果要使用需要自己new
不继承MonoBehavior的类一般是单例模式(用于管理模块)或者数据结构类(用于存储数据)
不继承MonoBehav ...
Unity中的反射机制的运用场景中对象的本质是Unity引擎提供给我们的作为场景中的所有对象的根本,在游戏场景中出现的一个对象不管是图片、模型、音效、摄像机等等都是依附在GameObject对象上的。
Transform是一个剧本,GameObject是一个演员,实际就是把一个Transform脚本和GameObject对象相关联。
默认刚创建的GameObject只有一个Transform脚本。其他的都需要我们手动去添加。
如何利用反射机制创建脚本在Project中的Assets中创建一个c#脚本,然后定义好一些变量后,把该脚本拖动到我们需要添加的GameObject上,就能在Inspector窗口看到对应的脚本添加
游戏场景游戏场景的保存Ctrl + sCtrl + Shift + s;
游戏场景的新建左上角新建
游戏场景的叠加把其中一个场景直接拖动到另一个场景的Hierarchy窗口里。一般不会进行两个场景的叠加,在某些时候,可能会使用到另一个场景的东西的时候,可以把另一个场景的东西复制过来,但在一般的情况下不会使用这种做法。
游戏场景的本质游戏场景文件,后缀为.unity就是一 ...
Scene和Hierarchy窗口窗口布局右上角Layout选项可以帮助我们快速布局,这边推荐新手使用2by3布局模式,可以同时看到scene和game窗口,后期想要自己布局的话,拖动完成布局之后,点击Save Layout就可以了。
Scene(场景窗口)场景窗口和层级窗口是息息相关的,层级窗口中看到的内容就是场景窗口中显示的对象。渲染模式;2D、3D视图切换;光源、音效、特效开启;辅助线显示;辅助功能;搜索;场景轴向
操作物体工具栏快捷键:
Q:平移
W:移动
E:旋转
R:缩放
T:2D
Y:综合
鼠标快捷键讲解:
鼠标左键:
单击:选中单个物体
框选:选中多个物体
Ctrl + 单击:多选物体
长按ALT + 鼠标左键 + 移动鼠标:相对观察口中心旋转
鼠标右键:
移动鼠标:旋转视口
按下 + WASD:漫游场景
按下 + WASD + Shift:加速漫游场景
长按ALT + 鼠标右键 + 移动鼠标:相对屏幕中心拉远拉近
鼠标中键:
滚动:对屏幕中心拉远拉近
中键按下 + 移动鼠标:平移观察视口
长按ALT + 滚动中键:朝哪就往哪拉近拉远
Hierarc ...
工程文件夹工程文件夹中有
1、Assets:工程资源文件夹(美术资源,脚本等等)
2、Library:库文件(Unity自动生成管理)
3、Logs:日志文件夹,记录特殊信息(Unity自动生成管理)
4、obj:编译产生的中间文件(Unity自动生成管理)
5、Packages:包配置信息(Unity自动生成管理)
6、ProjectSettings:工程设置信息(Unity自动生成管理)
创建工程
2D (Built-In Render Pipeline,内置渲染管线 2D)
适用场景:适用于开发 2D 游戏,如平台跳跃游戏、休闲益智游戏等,以及对 2D 图形表现有需求的应用程序。
渲染效果:能够满足基本的 2D 图形渲染需求,支持简单的精灵渲染、动画帧播放等,提供较为基础的 2D 视觉呈现。
性能消耗:相对较低,因为不涉及复杂的 3D 计算和处理,对于硬件性能要求不高,在移动设备等性能有限的平台上也能较为流畅地运行。
3D (Built-In Render Pipeline,内置渲染管线 3D)
适用场景:用于开发 3D 游戏或应用程序,像角色扮演游戏(RPG)、第一人称 ...
反射程序集程序集是由编译器编译得到的,供进一步编译执行的中间产物,在WINDOW系统中,它一般表现为后缀为.dil(库文件)或者是.exe(可执行文件)的格式。简单来说就是我们写的代码集合,我们写的所有代码都会被翻译器翻译为一个代码集供人使用,比如一个代码库或者一个可执行文件。
元数据元数据就是描述数据的数据这个概念不仅仅用于程序上,在别的领域也有使用。简单来说,程序中的类,类中的函数,函数中的变量就是元数据,有关程序以及类型的数据被称为元数据。它们保存在程序集中
反射程序正在运行时,可以查看其他程序集或者自身的元数据,一个运行的程序产肯本身或者其他程序的元数据行为就是反射。简单来说就是,在程序运行时,通过反射可以得到其他程序集和或者自己程序集代码的各种信息,实例化它们,执行它们,操作它们。
反射的作用因为反射可以在程序编译后获得信息,所以它提高了程序的拓展性和灵活性。
程序运行时得到所有元数据,包括元数据的特征
程序运行时,实例化对象,操作对象
程序运行时创建新对象,用这些对象执行任务。
语法Type12345678910111213141516171819202122class ...
委托和事件委托委托是什么委托是函数的容器,可以理解为表示函数的变量类型,用来储存、传递函数。委托的本质是一个类,用来定义函数的类型,不同的函数必须对应和各自格式一致的委托。
语法123访问修饰符默认不写是publicpublic delegate 返回值 委托名(参数列表);一般写在namespace语句块中
定义123delegate void MyFun();public delegate int MyFun2(int x);//定义了一个规则,并没有使用。//委托规则的声明不允许重名
使用自定义委托委托变量是函数的容器
12345678910111213141516MyFun f = new MyFun(Fun);//只能存储f.Invoke();//执行函数MyFun f2 = Fun;f2();MyFun f3 = Fun2;int x = f3(114514);static void Fun(){ }static int Fun2(int x){ return x;}
委托常用:作为类成员;作为函数的参数
123456789101 ...