Unity3D 一句话代码实现游戏素材整理和整取功能

在本文,你将学会如何用一句话代码(2个方案),实现游戏素材的自动加载到内存的功能;

功能:

适用场景:在一个文件夹有很多音频素材,其中有一类碰撞发生时的音效,命名规则为:CollisionEff01CollisionEff02,。。。CollisionEff0100;我想把这些有规律的碰撞音效,从众多繁杂的素材中整理出来并加载到内存。

演示:

Unity3D 一句话代码实现游戏素材整理和整取功能_第1张图片
运行时文件加载到内存

实现:

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(Resources.LoadAll("Audio")).FindAll((v) => { return v.name.IndexOf("CollisionEff") >= 0; }).ToArray();
        //Linq 方案
        AudioClipForCollision = new List(from k in (Resources.LoadAll("Audio")) where k.name.IndexOf("CollisionEff") >= 0 select k).ToArray();
    }
}

标签:Unity3D、List.FindAll、Linq、Lambda表达式、Resources.LoadALL资源加载

你可能感兴趣的:(Unity3D 一句话代码实现游戏素材整理和整取功能)