第一次使用Unity和C#。创建了一个按钮,只会计数到某个值,达到该值后,它会改变图像。
我的图像是一个Texture2D,我试图将其转换为sprite,但它总是抛出一个未设置为对象示例的对象引用,即使sprite不为空,而且我不确定它可能引用的对象。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class testButton : MonoBehaviour
{
//test function for testing onClick()
public void Test(){
counter++;
if (counter \> 10){
IconManager.instance.changeImage();
}
}
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class icon : MonoBehaviour
{
public Texture2D[] iconTextures;
public Texture2D tester;
public Sprite newSprite;
public Image newImage;
public static icon instance;
public void changeImage(){
tester = iconTextures[1];
newSprite = Sprite.Create(iconTextures[1], new Rect(0, 0, tester.width, tester.height), new Vector2(0.5f, 0.5f), 100.0f);
gameObject.GetComponent<Image>().sprite = newSprite;
}
}
任何帮助都是最好的,因为我没有主意了。谢谢
我尝试了很多教程和文章,看起来我们有相同风格的代码,但我的总是抛出异常。
3条答案
按热度按时间eblbsuwk1#
我能够修复这个问题。基本上我所做的是,而不是试图转换成一个sprite或任何东西,我用它作为一个原始图像。
我在该图像中添加了一个Raw Image组件,设置了默认纹理,并在相关脚本中,我的代码如下:
olmpazwi2#
保存单例示例。
cgfeq70w3#
检查图像的导入设置。确保纹理类型设置为Sprite(2D和UI)。这应该允许在代码中将其作为Sprite处理。然后,您需要对按钮的图像元素的Image类型引用。新图像应该作为Sprite引用。然后只需:你的图像.sprite =你的精灵