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

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

功能:

适用场景:在一个文件夹有很多音频素材,其中有一类碰撞发生时的音效,命名规则为:CollisionEff01CollisionEff02,。。。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资源加载

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容