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. LB+nginx+tomcat7集群模式下的https请求重定向(redirect)后变成http的解决方案

    0. 环境信息 Linux:Linux i-8emt1zr1 2.6.32-573.el6.x86_64 #1 SMP Wed Jul 1 18:23:37 EDT 2015 x86_64 x86_6 ...

  2. centos下redis的导出和导入(限set命令)

    #!/bin/bash REDIS_HOST=127.0.0.1 REDIS_PORT=6379 REDIS_DB=10 KEYNAME="*" KEYFILE=redis_key ...

  3. centos绑定多个域名

    正在使用aliyun主机,运行centos6.4 64位系统,安装lamp环境后进行域名绑定.配置文件如下: <VirtualHost *:80> DocumentRoot /var/ww ...

  4. webGL之three.js入门4--ThreeJS Editor入门篇

    因为工作需要,要看threejs editor的源码,顺便记录过程. github下载的源码目录是这样的 但是editor和其他文件夹内的内容的关联的,我需要将其独立出来并且编辑editor. 进入e ...

  5. Java第06次实验提纲(集合)

    PTA与参考资料 重要参考-集合简述 题集:jmu-Java-06-集合 集合实验文件 第1次实验 1.1 ArrayListIntegerStack(课堂演示) 可演示:jdk中的javadoc文档 ...

  6. 【springBoot】之配置文件application

    springboot使用一个全局的配置文件application.properties或者是application.yml,放在在src/main/recesources下或者在类路径下的/confi ...

  7. Javascript中的对象(八)

    一.如何编写可以计算的对象的属性名 我们都知道对象的属性访问分两种,键访问(["属性名"])和属性访问(.属性名,遵循标识符的命名规范) 对于动态属性名可以这样 var prefi ...

  8. python3学习笔记二(注释、缩进)

    注释 单行注释,用#开头即可 多行注释,用''' ''' 或""" """ 缩进 python不能像其他语言一样采用{}或者begin... ...

  9. uoj#158. 【清华集训2015】静态仙人掌

    http://uoj.ac/problem/158 预处理dfs序,询问转为区间1的个数,用可持久化bitset预处理出所有可能的修改对应哪些位置,然后用一个bitset维护当前每个点的状态,修改时可 ...

  10. JS之滚动条效果2

    在前面一篇说的是滚动条效果,本篇继续在前面的基础上面针对滚动条进行操作.本次要实现的效果如下:拖动滚动条左右移动时,上面的图片内容也相对外层盒子做相对移动. 下面针对要实现的效果进行分析:首先是页面基 ...