ugui sprite替换方法
2017-06-08 20:36
561 查看
转载自 http://www.manew.com/thread-96801-1-1.html 网虫虫
[align=left]
[/align]
[align=left]在NGUI中,我们可以直接用spriteName = “想要替换的图片名称”; 就可以很方便的替换资源[/align]
[align=left]而UGUI却相对要麻烦一点,下面为大家介绍比较常用的三种替换方式。[/align]
[align=left]我的方法: [/align]
[align=left] 创建一个图片物体,面板拖入。在创建一个精灵图片,在资源文件夹里拖入[/align]
一、
public Image right1;
public Sprite foulse1;
right1.sprite = foulse1;
[csharp] view
plain copy
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
[SerializeField]
Image myImage;
// Use this for initialization
void Start()
{
myImage.sprite = Resources.Load("Image/pic", typeof(Sprite)) as Sprite; // Image/pic 在 Assets/Resources/目录下
}
}
二、
[csharp] view
plain copy
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
[SerializeField]
Image myImage;
[SerializeField]
Sprite mySprite;
// Use this for initialization
void Start()
{
myImage.sprite = mySprite; // mySprite 为外部指定的图片资源
}
}
三、
[csharp] view
plain copy
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour {
[SerializeField]
Image myImage;
// Use this for initialization
void Start () {
StartCoroutine(GetImage());
}
IEnumerator GetImage()
{
string url = "http://www.5dbb.com/images/logo.gif";
WWW www = new WWW(url);
yield return www;
if (string.IsNullOrEmpty(www.error))
{
Texture2D tex = www.texture;
Sprite temp = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0, 0));
myImage.sprite = temp;
}
}
}
虽然吧里回答问题的人越来越少了,但我还是想问。
http://tieba.baidu.com/p/3790155887
怎么动态设置Image里面的Sprite。我知道Resources.Load可以。但如果把图片放到Resource目录里就无法用Sprite Packer了。求解~!如何动态更新更是个问题。网上看到雨松MOMO说把图片绑到Perfab上。难道真的只有这个解决方法?
----------------------不用啊。
首先你得获得动态的Sprite。
比如你直接
public Sprite[] images ;//直接资源里的图片拖进去就行
public Image img;
img.Sprite = images[0];就这么简单啊。
-----------------------------------
这样是可以,但我想动态更新怎么办?而且我的逻辑部分在lua
几百张图片的话怎么办,肯定不能一个个拖吧,怎么动态加载
坟贴了还一直有人挖,我就共享下我目前的解决方法吧:
移动端:AssetBundle,不需要Resource.Load。方法7楼讲了。
电脑端:用AssetBundle不方便电脑制作和调试。因为是编辑器可以用编辑器的方法加载图片:
UnityEditor.AssetDatabase.LoadAssetAtPath<Sprite>()
如果又不想用AssetBundle,还想用SpritePacker。我知道的,只能Prefab关联。
电脑端,想不导AssetBundle,还想用SpritePacker, Resources.LoadAssetAtPath<Sprite>("Assets/xxxxx/pic.png");
从Assets开始写全路径,Assets别少了s 注意2:资源名要加后缀,如上的.png 注意3:要加载Sprite所在文件xxx.png,而不是Sprite分割后的名 u3d会自动关联寻找pack之后的图集,自动合并DrawCall
转载自 http://www.manew.com/thread-96801-1-1.html 网虫虫
[align=left]
[/align]
[align=left]在NGUI中,我们可以直接用spriteName = “想要替换的图片名称”; 就可以很方便的替换资源[/align]
[align=left]而UGUI却相对要麻烦一点,下面为大家介绍比较常用的三种替换方式。[/align]
[align=left]我的方法: [/align]
[align=left] 创建一个图片物体,面板拖入。在创建一个精灵图片,在资源文件夹里拖入[/align]
一、
public Image right1;
public Sprite foulse1;
right1.sprite = foulse1;
[csharp] view
plain copy
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
[SerializeField]
Image myImage;
// Use this for initialization
void Start()
{
myImage.sprite = Resources.Load("Image/pic", typeof(Sprite)) as Sprite; // Image/pic 在 Assets/Resources/目录下
}
}
二、
[csharp] view
plain copy
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour
{
[SerializeField]
Image myImage;
[SerializeField]
Sprite mySprite;
// Use this for initialization
void Start()
{
myImage.sprite = mySprite; // mySprite 为外部指定的图片资源
}
}
三、
[csharp] view
plain copy
using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class Test : MonoBehaviour {
[SerializeField]
Image myImage;
// Use this for initialization
void Start () {
StartCoroutine(GetImage());
}
IEnumerator GetImage()
{
string url = "http://www.5dbb.com/images/logo.gif";
WWW www = new WWW(url);
yield return www;
if (string.IsNullOrEmpty(www.error))
{
Texture2D tex = www.texture;
Sprite temp = Sprite.Create(tex, new Rect(0, 0, tex.width, tex.height), new Vector2(0, 0));
myImage.sprite = temp;
}
}
}
虽然吧里回答问题的人越来越少了,但我还是想问。
http://tieba.baidu.com/p/3790155887
怎么动态设置Image里面的Sprite。我知道Resources.Load可以。但如果把图片放到Resource目录里就无法用Sprite Packer了。求解~!如何动态更新更是个问题。网上看到雨松MOMO说把图片绑到Perfab上。难道真的只有这个解决方法?
----------------------不用啊。
首先你得获得动态的Sprite。
比如你直接
public Sprite[] images ;//直接资源里的图片拖进去就行
public Image img;
img.Sprite = images[0];就这么简单啊。
-----------------------------------
这样是可以,但我想动态更新怎么办?而且我的逻辑部分在lua
几百张图片的话怎么办,肯定不能一个个拖吧,怎么动态加载
坟贴了还一直有人挖,我就共享下我目前的解决方法吧:
移动端:AssetBundle,不需要Resource.Load。方法7楼讲了。
电脑端:用AssetBundle不方便电脑制作和调试。因为是编辑器可以用编辑器的方法加载图片:
UnityEditor.AssetDatabase.LoadAssetAtPath<Sprite>()
如果又不想用AssetBundle,还想用SpritePacker。我知道的,只能Prefab关联。
电脑端,想不导AssetBundle,还想用SpritePacker, Resources.LoadAssetAtPath<Sprite>("Assets/xxxxx/pic.png");
从Assets开始写全路径,Assets别少了s 注意2:资源名要加后缀,如上的.png 注意3:要加载Sprite所在文件xxx.png,而不是Sprite分割后的名 u3d会自动关联寻找pack之后的图集,自动合并DrawCall
相关文章推荐
- TOMCAT用Https替换Http的方法
- TOMCAT用https替换http的方法
- 2.0方法1.0实现之Sprite类
- 替换OWA通讯录方式的方法
- 分析字符串替换的高效方法
- 在MySQL中用正则表达式替换数据库中的内容的方法
- 高效的忽略大小写的字符串替换(Replace)函数(多种方法比较)
- 页面中标题替换方法,在SQL中取数据时。
- 在Spring中使用replaced-method来进行方法替换
- WindowsXP系统文件替换方法详解
- 替换输入域中&nbsp方法
- 替换XP的系统字体为Vista的Segoe UI字体的较完美方法
- java处理大文本及复杂文本替换方法
- 快速上手Spring--10. 任意方法的替换
- TOMCAT用https替换http的方法
- 用替换Jscript的方法测试兼容性
- 快速上手Spring--10. 任意方法的替换
- Windows XP操作系统文件替换方法详解
- 【SQLSERVER】 "in"的替换方法
- 快速上手Spring--10. 任意方法的替换