zoukankan      html  css  js  c++  java
  • 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 ;

     

  • 相关阅读:
    四、网络层
    四、路由协议
    四、最长前缀匹配
    四、路由转发
    四、分片
    五、TCP的可靠传输你怎么看
    存储周期
    判断素数
    需求说明书的内容
    块级元素——盒子模型1
  • 原文地址:https://www.cnblogs.com/Roz-001/p/11124638.html
Copyright © 2011-2022 走看看