在本文,你将学会如何用一句话代码(2个方案),实现游戏素材的自动加载到内存的功能;
功能:
适用场景:在一个文件夹有很多音频素材,其中有一类碰撞发生时的音效,命名规则为:CollisionEff01
、CollisionEff02
,。。。CollisionEff0100
;我想把这些有规律的碰撞音效,从众多繁杂的素材中整理出来并加载到内存。
演示:
实现:
using System.Linq;
using System.Collections.Generic;
using UnityEngine;
public class TestForFileLoading : MonoBehaviour {
[Header("List.FindAll方案:")] public AudioClip[] AudioObjForCollision; //存放加载到内存的音效
[Header("Linq 方案:")] public AudioClip[] AudioClipForCollision; //存放加载到内存的音效
private void Start()
{
//List.FindAll方案
AudioObjForCollision = new List<AudioClip>(Resources.LoadAll<AudioClip>("Audio")).FindAll((v) => { return v.name.IndexOf("CollisionEff") >= 0; }).ToArray();
//Linq 方案
AudioClipForCollision = new List<AudioClip>(from k in (Resources.LoadAll<AudioClip>("Audio")) where k.name.IndexOf("CollisionEff") >= 0 select k).ToArray();
}
}
标签:Unity3D、List.FindAll、Linq、Lambda表达式、Resources.LoadALL资源加载