Unity学习日志3
1.光照Lighting系统
①Directional 平行光
与位置position无关,与rotation有关。
运用: 可以用rotation的变化模拟白天黑夜的更迭。
②Point 点光
随距离减弱
与位置position有关,与rotation无关。
运用: 灯泡
③Spot 聚光灯
与位置position有关,与rotation有关。
手电筒光
④ Area 范围光
非时实光照
2.Ref和Out关键字
是一种引用 &
1. ref 关键字
作用:
ref 用于传递参数的引用(而不是值)。
方法可以修改调用者传递的变量的值。
特点:
调用方法时,必须初始化 ref 参数。
方法内部可以读取和修改 ref 参数的值。
2. out 关键字
作用:
out 用于传递参数的引用(而不是值)。
方法必须为 out 参数赋值。
特点:
调用方法时,不需要初始化 out 参数。
方法内部必须为 out 参数赋值。
3.声音相关的组件
声音文件会作为一个audiocilp存在于文件夹中。
想要播放声音有以下几步。
!需要有AudioListener组件才能听到声音,需要有AudioSource组件才能播放声音。相机自带AudioListener,但是如果使用了DontDestry到新的场景可能会存在多个Listener,要将其中一个去除,一个场景存在多个会warning。
1.将声音文件拖入Asset文件夹。
2.创建一个Empty物体作为父物体,把音频拖入 Hierarchy作为一个GameObject,会自动挂载AudioSource组件。
3.在C#脚本中声明一个Audiosource数组存储AudioSource组件(挂载于父物体上)。
3.将音频拖入这个数组中(把AudioSource添加到数组中)。
4.代码中用下标索引来播放音频。
扩展1 动态加载资源
T resource = Resources.Load<T>(path);
T[] resources = Resources.LoadAll<T>(path);
path表示的是Resource这个目录往后的路径
比如/Resources/Audio/sound1
string path = "Audio/sound1 ";
AuidoClip = Resources.Load<AuidoClip>(path);
如果不想使用Hierarchy可以使用这个动态加载文件夹中的内容。(图片来源Bilibili银鸟工作室)
使用文件夹分类
方法:
在 Resources 文件夹中创建子文件夹,将不同类型的文件分类存放。
例如:
Resources/Textures:存放纹理文件。
Resources/Audio:存放音频文件。
Resources/Prefabs:存放预制体文件。
using UnityEngine;
public class LoadResources : MonoBehaviour
{
void Start()
{
// 加载纹理
Texture[] textures = Resources.LoadAll<Texture>("Textures");
foreach (Texture texture in textures)
{
Debug.Log("Loaded texture: " + texture.name);
}
// 加载音频
AudioClip[] audioClips = Resources.LoadAll<AudioClip>("Audio");
foreach (AudioClip clip in audioClips)
{
Debug.Log("Loaded audio: " + clip.name);
}
// 加载预制体
GameObject[] prefabs = Resources.LoadAll<GameObject>("Prefabs");
foreach (GameObject prefab in prefabs)
{
Debug.Log("Loaded prefab: " + prefab.name);
}
}
}
扩展2 声音管理器 (图片来源Bilibili银鸟工作室)
外部可以直接通过调用Play并且传入文件名字播放某个音频。