1.图文混排中的资源,主要是图片。

2.所谓的资源管理,可以分为资源对象池和资源加载这两部分。这里是为图文混排单独做一套资源管理,当然也可以改为调用项目中的资源管理。

RichTextResourceManager.cs

 using UnityEngine;
using System.Collections.Generic;
using UnityEngine.UI;
using System;
#if UNITY_EDITOR
using UnityEditor;
#endif public enum RichTextResourceType
{
Image,
} public class RichTextResourceManager : CSharpSingletion<RichTextResourceManager> { private Dictionary<RichTextResourceType, List<GameObject>> typeGoDic = new Dictionary<RichTextResourceType, List<GameObject>>();
private DefaultControls.Resources resources = new DefaultControls.Resources(); public void SetPoolObject(RichTextResourceType type, GameObject go)
{
if (!typeGoDic.ContainsKey(type))
{
List<GameObject> goList = new List<GameObject>();
goList.Add(go);
typeGoDic.Add(type, goList);
}
else
{
typeGoDic[type].Add(go);
}
go.SetActive(false);
} public GameObject GetPoolObject(RichTextResourceType type)
{
GameObject go = null;
if (typeGoDic.ContainsKey(type))
{
if (typeGoDic[type].Count > )
{
go = typeGoDic[type][];
if (go)
{
go.SetActive(true);
typeGoDic[type].Remove(go);
return go;
}
}
}
go = CreatePoolObject(type);
return go;
} private GameObject CreatePoolObject(RichTextResourceType type)
{
GameObject go = null;
if (type == RichTextResourceType.Image)
{
go = CreateImage();
}
return go;
} public void LoadSprite(string path, Action<Sprite> callback)
{
#if UNITY_EDITOR
Sprite sprite = AssetDatabase.LoadAssetAtPath<Sprite>("Assets/" + path + ".png");
if ((sprite != null) && (callback != null))
{
callback(sprite);
}
#endif
} public void LoadSprite(string path, Action<Sprite[]> callback)
{
#if UNITY_EDITOR
Sprite[] sprites = AssetDatabase.LoadAllAssetsAtPath("Assets/" + path + ".png") as Sprite[];
if ((sprites != null) && (callback != null))
{
callback(sprites);
}
#endif
} public void SetSprite(string path, Image image)
{
LoadSprite(path, (Sprite sprite) => { image.sprite = sprite; });
} private GameObject CreateImage()
{
GameObject go = DefaultControls.CreateImage(resources);
go.layer = LayerMask.NameToLayer("UI");
Image image = go.GetComponent<Image>();
image.raycastTarget = false;
return go;
}
}

[UGUI]图文混排(三):资源管理的更多相关文章

  1. Unity UGUI图文混排源码(三) -- 动态表情

    这里是根据图文混排源码(二)进一步修改的,其他链接也不贴了,就贴一个链接就好了,第一次看这文章的同学可以先去看看其他几篇文章 Unity UGUI图文混排源码(二):http://blog.csdn. ...

  2. Unity UGUI图文混排源码(二)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  3. Unity琐碎(3) UGUI 图文混排解决方案和优化

    感觉使用Unity之后总能看到各种各样解决混排的方案,只能说明Unity不够体恤下情啊.这篇文章主要讲一下个人在使用过程中方案选择和优化过程,已做记录.顺便提下,开源很多意味着坑,还是要开实际需求. ...

  4. Unity UGUI图文混排源码(一)

    Unity UGUI图文混排源码(一):http://blog.csdn.net/qq992817263/article/details/51112304 Unity UGUI图文混排源码(二):ht ...

  5. [UGUI]图文混排(二):Text源码分析

    UGUI源码: https://bitbucket.org/Unity-Technologies/ui/downloads/?tab=tags 首先下载一份UGUI源码,这里我下载的版本是5.3.2f ...

  6. Unity UGUI图文混排(七) -- 下划线

    之前更新超链接的时候,忘了搭配实现一个下划线的功能,这篇文章就是来补上这一个功能,时间有点长,一方面没有很好的思路,一方面也没多少时间. 先在网上收集了一下下划线的实现操作,一种是在文本下再创建一个文 ...

  7. Unity UGUI图文混排(六) -- 超链接

    图文混排更新到超链接这儿,好像也差不多了,不过就在最后一点,博主也表现得相当不专业,直接整合了山中双木林同学提供的超链接的解决方案,博主甚至没来得及细看就直接复制了,但感觉还是挺好用的. 博主已经将超 ...

  8. [UGUI]图文混排(一):标签制定和解析

    参考链接: https://github.com/SylarLi/RichText/tree/master/Assets/Scripts 正则表达式: https://blog.csdn.net/ly ...

  9. Unity UGUI图文混排源码(四) -- 聊天气泡

    这里有同学建议在做聊天气泡时,可以更改为一张图集对应多个Text,这样能节省资源,不过我突然想到每个Text一个图集,可以随时更换图集,这样表情图更丰富一些,于是我就先将现有的聊天demo改为了聊天气 ...

随机推荐

  1. ionic 监听路由事件变化

    (function(){ angular.module("cakeStore", ["ngRoute", "ionic","coo ...

  2. gpio模拟I2C,驱动pcf8574T

    一.pcf8574T介绍 查看pcf8574T的数据手册, A表示读或写,当A为1的时候表示读,当A为0的时候表示写.现把地址控制线,即A2.A1.A0全部接地,可以得到读控制指令为0x41,写控制指 ...

  3. phpmailer SMTP connect() failed的解决方法

    使用PHPMailer发邮件的时候,经常出现本地可以发送,上传到服务器就发送失败了.老是提示SMTP connect() failed 今天我也遇到了这样的问题,用的是QQ的邮箱服务器,查了下资料,很 ...

  4. MATLAB System Generator初识

    MATLAB System Generator初识 仿真模型: 仿真结果: 使用system generator 搭建低通滤波器具体步骤: 打开库,库里面的组件详细介绍见UG958文档 添加数字滤波器 ...

  5. [转]跳板机Jumpserve的生产环境配置

    6.跳板机Jumpserver]   Jumpserver是国内一款开源的轻便的跳板机系统,他们的官网:http://www.jumpserver.org/ 使用这款软件意在提高公司内部登录生产环境服 ...

  6. LDO与DC-DC

    LDO的功耗可能较低,在430中如果用3.7v锂电池供电,最好用LDO DC-DC功耗较高 其它的区别不大

  7. vue cli 配置信息说明

    摘自csdn http://blog.csdn.net/hongchh/article/details/55113751

  8. 【java】之equals和==区别

      Java中数据类型可以分为两类 1.基本数据类型(byte,short,char,int,float,double,long,boolean) 2.复合数据类型(类,String等) Δ在基本数据 ...

  9. C++进阶--代码复用 继承vs组合

    //############################################################################ /* * 代码复用: 继承 vs 组合 * ...

  10. C# name scheme

    1.For varibale.camel scheme.the first word lowercase the first letter,then other words capitalize th ...