http://www.xiaobao1993.com/886.html

来源与小宝个人笔记【稍作修改】

//使用  Prefabs/Resources/stone1

ResourceMgr.GetInstance().CreateGameObject ("stone1",image,true);

using UnityEngine;
using System.Collections; public class ResourceMgr : MonoBehaviour
{
#region 初始化
private static ResourceMgr mInstance; /// <summary>
/// 获取资源加载实例
/// </summary>
/// <returns></returns>
public static ResourceMgr GetInstance()
{
if(mInstance == null)
{
mInstance = new GameObject("_ResourceMgr").AddComponent<ResourceMgr>();
}
return mInstance;
}
private ResourceMgr()
{
Debug.LogError ("---------------");
hashtable = new Hashtable();
}
#endregion /// <summary> 资源缓存容器 </summary>
private Hashtable hashtable;
/// <summary>
/// Load 资源
/// </summary>
/// <typeparam name="T">资源类型</typeparam>
/// <param name="path">资源路径</param>
/// <param name="cacheAsset">是否要缓存资源</param>
/// <returns></returns>
public T Load<T>(string path, bool cache) where T : Object
{
if (hashtable.Contains(path))
{
return hashtable[path] as T;
} Debug.Log(string.Format("Load assset frome resource folder,path:{0},cache:{1}", path, cache));
T assetObj = Resources.Load<T>(path);
if (assetObj == null)
{
Debug.LogWarning("Resources中找不到资源:" + path);
}
if (cache)
{
hashtable.Add(path, assetObj);
Debug.Log("Asset对象被缓存,Resource'path=" + path);
}
return assetObj;
} /// <summary>
/// 创建Resource中GameObject对象
/// </summary>
/// <param name="path"资源路径</param>
/// <param name="cacheAsset">是否要缓存Asset对象</param>
/// <returns></returns>
public GameObject CreateGameObject(string path,GameObject parent, bool cache)
{
GameObject assetObj = Load<GameObject>(path, cache);
GameObject go = Instantiate(assetObj) as GameObject;
if (go != null && parent != null)
{
Transform t = go.transform;
t.parent = parent.transform;
t.localPosition = Vector3.zero;
t.localRotation = Quaternion.identity;
t.localScale = Vector3.one;
go.layer = parent.layer;
}
if (go == null)
{
Debug.LogWarning("从Resource创建对象失败:" + path);
}
return go;
} // Use this for initialization
void Start () { } // Update is called once per frame
void Update () { }
}

  

Prefabs实例化 ResourceMgr的更多相关文章

  1. Unity3D热更新之LuaFramework篇[03]--prefab加载和Button事件

    在上一篇文章 Unity3D热更新之LuaFramework篇[02]--用Lua创建自己的面板 中,我介绍了LuaFramework加载面板的方法,但这个方法并不适用于其它Prefab资源,在这套框 ...

  2. Unity Prefabs

    通过上一期的学习,我们知道为了如何向场景中添加一个物体.问题来了,如果需要对这个立方体进行修改应该怎么做呢?那我们肯定就得修改这段代码,能不能将立方体本身从我们的开发中单独提出来呢?这就涉及到我们今天 ...

  3. Spring中Bean的实例化

                                    Spring中Bean的实例化 在介绍Bean的三种实例化的方式之前,我们首先需要介绍一下什么是Bean,以及Bean的配置方式. 如果 ...

  4. [转]ThinkPHP中实例化对象M()和D()的区别,select和find的区别

    1.ThinkPHP中实例化对象M()和D()的区别 在实例化的过程中,经常使用D方法和M方法,这两个方法的区别在于M方法实例化模型无需用户为每个数据表定义模型类,如果D方法没有找到定义的模型类,则会 ...

  5. 对C#泛型实例化对像

    public class A { } public class B<T> { public static T Get() { //在这一块如何实例化T这个对象呢?如果用default(T) ...

  6. spring实例化bean的三种方式

    公共使用的实体

  7. 【EntityFramework Core】实体实例化注入

    由于逻辑需要,我希望能在EF Core实例化实体时,拿到实体并执行相关代码,所以我就研究了一番EF Core,得到以下方法. 1.创建实体初始化类,继承EntityMaterializerSource ...

  8. Cesium原理篇:6 Render模块(6: Instance实例化)

    最近研究Cesium的实例化,尽管该技术需要在WebGL2.0,也就是OpenGL ES3.0才支持.调试源码的时候眼前一亮,发现VAO和glDrawBuffers都不是WebGL1.0的标准函数,都 ...

  9. [译]Godot系列教程三 - 场景实例化(续)

    场景实例化(续) 要点 场景实例化带来很多便利的用法,总体来说有: 将场景细分,更便于管理 相对于某些引擎中的Prefab组件更灵活,并且在许多方面更强大 是一种设计更复杂的游戏流程甚至UI的方式 这 ...

随机推荐

  1. [Ruby学习总结]Ruby中的类

    1.类名的定义以大写字母开头,单词首字母大写,不用"_"分隔 2.实例化对象的时候调用new方法,实际上调用的是类里边的initialize方法,是ruby类的初始化方法,功能等同 ...

  2. 从一段代码看fork()函数及其引发的竞争

    首先来看一段从<UNIX环境高级编程>中摘录的一段很有意思的代码.借此我们再来谈谈fork()函数的一些问题. #include "apue.h" static voi ...

  3. PHP反射ReflectionClass、ReflectionMethod 入门教程

    PHP反射ReflectionClass.ReflectionMethod 入门教程 作者:SNSGOU 发布于:2014-03-16 16:44:00  分类:PHP   浏览(6145) PHP5 ...

  4. unity 3d 生成apk文件时,设置图标

    如图所示:注意红线标注部分: 如果安装到手机之后,程序的图标还是unity的默认图标,重启手机即可.

  5. CentOS 7.0 systemd代替service

    CentOS 7.0中一个最主要的改变,就是切换到了systemd.它用于替代红帽企业版Linux前任版本中的SysV和Upstart,对系统和服务进行管理.systemd兼容SysV和Linux标准 ...

  6. 一、MP3文件概述

    一.概述 MP3 文件是由帧(frame)构成的,帧是 MP3 文件最小的组成单位.MP3 的全称应为 MPEG1 Layer-3 音频文件,MPEG(Moving Picture Experts G ...

  7. how to install tweepy

    首先,设置环境变量: 在path 里面 添加: C:\Python27 , 这是python的安装目录. 打开CMD, 复制 setup.py的目录:C:\Users\Administrator\De ...

  8. c# 使用oledb 写入导出excel设置单元格为成数字格式 设置了不起作用

    使用oledb 导出过程中,如果excel安装版本低于2010,无论怎么设置.导出的都是文本格式. 用代码-使用数据-分列,解决

  9. 手把手教你使用Git(转)

    Git使用教程 2014-10-25 14:29 by 云溪0707, 10532 阅读, ... 评论, 收藏, 编辑 Git使用教程 一:Git是什么? Git是目前世界上最先进的分布式版本控制系 ...

  10. Java内存模型(转载)

    1. 概述 多任务和高并发是衡量一台计算机处理器的能力重要指标之一.一般衡量一个服务器性能的高低好坏,使用每秒事务处理数(Transactions Per Second,TPS)这个指标比较能说明问题 ...