个人主页:@元宇宙-秩沅
hallo 欢迎 点赞 收藏⭐ 留言 加关注✅!
本文由 秩沅 原创
收录于专栏:unity每日一记
⭐【Unityc#专题篇】之c#系统化大礼包】
⭐【unity数据持久化】数据管理类_PlayerPrfs
⭐【unity本站最全系列】unity常用API大全一篇文章足以
资源加载适用于需要加载资源较多的 情况就不用一个一个的拖拽进去
加载资源前首先需要在project面板中创建Resource名字的文件夹,为固定文件夹用于资源加载
以加载AudioClip类型的资源为例:
关键字:@ ,as
void Start()
{
Object obj= Resources.Load("sound");
//AudioClip ac = obj as AudioClip;
AudioClip ac = (AudioClip)obj;
AudioSource.PlayClipAtPoint(ac, transform.position);
//Resources.LoadAll("Prefabs");
AudioClip[] audioClips= Resources.LoadAll<AudioClip>("");
foreach (var item in audioClips)
{
Debug.Log(item);
}
//Resources.UnloadAsset
}
首先添加场景加载的命名空间Using UnityEngine.SceneManagement ;
而后把游戏场景都保存(拖拽)在 Buid setting 里面,相当于存储场景的目录
SceneManager.Load( 序列号) ;
SceneManager.Load( “场景名”) ;
void Start()
{
//SceneManager.LoadScene(1);
//SceneManager.LoadScene("TriggerTest");
}
缺点:加载时造成画面卡帧,原因为,在未加载完成前画面是停止的,所以是卡帧现象
异步加载与协程配套使用,协程也属于异步加载中的一部分
【 优点:不影响主进程的加载】
SceneManager.LoadAsync(序列号)
SceneManager.LoadAsync(“场景名”)
但是通常我们和协程一起使用:
StartCoroutine(协程迭代器方法() ); //调用协程
AsyncOperation 解析:、
AsyncOperation 该类型翻译为异步操作 ,为下面获得异步场景的返回值
AsyncOperation ao= SceneManager.LoadSceneAsync(2);
ao.allowSceneActivation = true 激活场景
ao.progress 场景加载的进度
void Update()
{
if (Input.GetKeyDown(KeyCode.Space)) //按下空格调用协程
{
StartCoroutine(LoadNextAsyncScene());
}
if (Input.anyKeyDown&&ao.progress>=0.9f) //当场景进程加载超过百分之90 激活场景
{
ao.allowSceneActivation = true;
}
}
IEnumerator LoadNextAsyncScene()
{
AsyncOperation ao= SceneManager.LoadSceneAsync(2);
ao.allowSceneActivation = false;
while (ao.progress<0.9f)
{
//当前场景加载进度小于0.9
//当前场景挂起,一直加载,直到加载基本完成
yield return null;
}
Debug.Log("按下任意键继续游戏");
}
⭐【Unityc#专题篇】之c#进阶篇】
⭐【Unityc#专题篇】之c#核心篇】
⭐【Unityc#专题篇】之c#基础篇】
⭐【Unity-c#专题篇】之c#入门篇】
⭐【Unityc#专题篇】—进阶章题单实践练习
⭐【Unityc#专题篇】—基础章题单实践练习
⭐【Unityc#专题篇】—核心章题单实践练习
你们的点赞 收藏⭐ 留言 关注✅是我持续创作,输出优质内容的最大动力!、