Unity通过脚本控制Image组件

7 篇文章 0 订阅
7 篇文章 1 订阅

Unity 通过脚本控制Image组件

1.在Hierarchy面板上新建一个Canvas。
2.在Project面板上新建文件夹Resources,把你想要加载的图片放在这里面。
3.刚加载进来的图片是不能用的需要把图片改成sprite格式,图片必须是sprite格式在unity的Image里才可以使用。点击图片在Inspector面板的Texture Type里将属性改成Sprite(2D and UI)。

修改之后图片会变成这个样子。
在这里插入图片描述第一种方法是定义变量通过变量把图片赋值给Image组件。
注意:脚本里使用Image需要引入命名空间 using UnityEngine.UI;
定义一个Sprite类型的变量(如果图片多的话可以定义成数组)。
我是把脚本挂在了Canvas上,如果是挂在了Image组件上可以不定义Image变量直接用transform.GetComponent().sprite = sprites[0]; 来动态加载图片。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ImageDemo : MonoBehaviour {

	public Sprite[] sprites;
	public Image image;
	// Use this for initialization
	void Start () {
		//把图片赋值给Image组件
		image.sprite = sprites[0];
	}
}

在Canvas下创建一个Image组件。
然后把图片和image组件拖进脚本。
在这里插入图片描述运行之后的结果。

在这里插入图片描述第二种方法是在文件夹里找到图片然后赋值给Image组件。
在Assets下创建一个名为Resources的文件夹(注意名字不要错不然会找不到图片),然后把图片放在这个文件夹里,同样需要把图片改成sprite格式。
在这里插入图片描述
在这里我是动态创建的Image对象并没有在Unity 编译器里创建Image。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ImageDemo : MonoBehaviour {

	void Start () {

		//创建一个Image对象
		GameObject newImage = new GameObject("Image");
		//把newImage对象变成Canvas对象的子节点对象
		newImage.transform.SetParent(GameObject.Find("Canvas").transform);
		//添加Image组件
		newImage.AddComponent<Image>();
		//动态加载贴图赋值给Image
		newImage.GetComponent<Image>().sprite = Resources.Load<Sprite>("2");
	
	}
}

运行结果,由于没有设计格式位置什么的所以它在左下角。动态创建的所以右边Canvas下多了一个Image。

在这里插入图片描述

也可以通过脚本去设置格式。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class ImageDemo : MonoBehaviour {

	void Start () {
	
		//创建一个Image对象
		GameObject newImage = new GameObject("Image");
		//把newImage对象变成Canvas对象的子节点对象
		newImage.transform.SetParent(GameObject.Find("Canvas").transform);
		//添加Image组件
		newImage.AddComponent<Image>();
		//动态加载贴图赋值给Image
		newImage.GetComponent<Image>().sprite = Resources.Load<Sprite>("2");
		//将图片变成黑色而且改变透明度为50%
		newImage.GetComponent<Image>().color = new Color(0, 0, 0, 0.5f);
		//修改位置       
		newImage.GetComponent<RectTransform>().anchoredPosition = new Vector2(0.0f, 100.0f);
		//修改旋转
		newImage.GetComponent<RectTransform>().localRotation = Quaternion.Euler(new Vector3(0f, 180f, 0f));
		//修改缩放
		newImage.GetComponent<RectTransform>().localScale = new Vector3(1.2f, 1.2f, 1.2f);
		//修改大小
		newImage.GetComponent<RectTransform>().sizeDelta = new Vector2(200.0f, 200.0f);

	}
}

设置格式后的结果。
在这里插入图片描述

  • 16
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值