• Unity3D_Resources封装(ResourcesManager 类)


    Unity3D_Resources封装(ResourcesManager 类)

     1 using System.Collections;
     2 using System.Collections.Generic;
     3 using UnityEngine;
     4 
     5 public class ResourcesManager 
     6 {
     7     //如果说当前资源之前没有加载过的话,那么加载一遍,并且将该资源记录下来
     8     //如果当前资源之前 加载过的话,那么直接使用之前 加载过的资源
     9     static Dictionary<string, GameObject> resDic = new Dictionary<string, GameObject>();
    10 
    11     //非泛型用于加载预置体对象
    12     public static GameObject Load(string path)
    13     {
    14         if (resDic.ContainsKey(path))
    15         {
    16             return resDic[path];
    17         }
    18 
    19         // var goPrefab = Resources.Load("Prefab//BagUnit") as GameObject;
    20         GameObject go = Resources.Load(path) as GameObject;
    21         resDic[path] = go;
    22 
    23         return go;
    24     }
    25 
    26     //------------------------------------------------
    27     static Hashtable resTable = new Hashtable();
    28 
    29     //泛型约束,明确特化时,类型形参必须是继承于UnityEngine.Object
    30     public static T Load<T>(string path) where T : UnityEngine.Object
    31     {
    32         if (resTable.ContainsKey(path))
    33         {
    34             return resTable[path] as T;
    35         }
    36 
    37         //var goSprite = Resources.Load<Sprite>(iconPath);
    38         T t = Resources.Load<T>(path);
    39         resTable[path] = t;
    40 
    41         return t;
    42     }
    43 }
    View Code

    其作用最大的是性能优化 , 不用重复使用内存的读取。

    ResourcesManager .Load和ResourcesManager .Load<T> ;

    ResourcesManager中非泛型读取使用Dictionary 字典键值对 。 泛型使用Hashtable 字典键值对 做了明确特化的模式<T>: where T :UnityEngine.object ;

     

  • 相关阅读:
    采购到入库所经历的表
    PO 收料SQL
    关于PO 和PR 的联系问题
    在Oracle Form中,如何实现自动编号(行号)的功能
    订单暂挂问题sql解决:
    类和结构的区别?
    DataTable.Select 方法 (String, String, DataViewRowState)
    Ref与Out的区别
    C# 反射
    委托
  • 原文地址:https://www.cnblogs.com/Roz-001/p/11124638.html
Copyright © 2020-2023  润新知