Unity-通过脚本修改图片sprite

Posted 小狐狸FM

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity-通过脚本修改图片sprite相关的知识,希望对你有一定的参考价值。

前言

通过创建的C#脚本修改原有图片的信息,素材来自爱给网

Unity版本: 2019.4.26
Visual Studio版本: 2019

相关介绍

unity3d输入与控制——键盘事件

其他介绍

微软官方C#函数文档

Unity官方API文档(英文)

Unity官方API文档(中文)

Unity官方用户手册(中文)

Unity游戏蛮牛API文档(中文)

Unity教程-C语言中文网

Unity用户手册-unity圣典

Unity组件手册-unity圣典

Unity脚本手册-unity圣典

上一篇笔记

Unity(5)-解决Input类无法识别的问题

下一篇笔记

Unity(7)-控制2D物体移动

一、项目结构

在这里插入图片描述

二、脚本

[1]. 挂载脚本

先创建一个C#脚本,并添加到预制体上

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

[2]. 声明SpriteRenderer

sprite属性位于SpriteRenderer组件下,所以我们需要先在类中声明一个的SpriteRenderer组件对象

在这里插入图片描述

public SpriteRenderer sr;//组件

[3]. 获取SpriteRenderer

当游戏开始的时候,就会执行Start()的内容获取预制体的SpriteRenderer组件

	void Start()
    {
        sr = GetComponent<SpriteRenderer>();
    }

[4]. 声明Sprite数组

声明一个Sprite类型的数组,可以用来存储多个图片的信息
使用public关键字可以在脚本外部引用图片的信息

public Sprite[] pic;//图片

[5]. 导入Sprite

将所需的图片拖动到数组之中,我们脚本内的数组名是pic,在外部会将首字母大写。

在这里插入图片描述

在这里插入图片描述

[6]. 按键监控

为了防止在Upate()中多次执行图片切换的操作,可以按下按键后才触发图片切换
你可以参考下面的文章,来理解

unity3d输入与控制——键盘事件

    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Alpha0))//当按下数字0时
        {
            
        }
        else if (Input.GetKeyDown(KeyCode.Alpha1))//当按下数字1时
        {

        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))//当按下数字2时
        {

        }
        else if (Input.GetKeyDown(KeyCode.Alpha3))//当按下数字3时
        {

        }
        else if (Input.GetKeyDown(KeyCode.Alpha4))//当按下数字4时
        {

        }
        else if (Input.GetKeyDown(KeyCode.Alpha5))//当按下数字5时
        {

        }
    }

[7]. 切换图片

切换图片主要是通过[对象名].sprite来修改图片的内容
srSpriteRenderer组件的对象,数组下标是从0开始

	void Update()
    {
        if(Input.GetKeyDown(KeyCode.Alpha0))//当按下数字0时
        {
            sr.sprite = pic[0];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha1))//当按下数字1时
        {
            sr.sprite = pic[1];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))//当按下数字2时
        {
            sr.sprite = pic[2];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha3))//当按下数字3时
        {
            sr.sprite = pic[3];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha4))//当按下数字4时
        {
            sr.sprite = pic[4];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha5))//当按下数字5时
        {
            sr.sprite = pic[5];
        }
    }

[8]. 全部代码

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

public class Change : MonoBehaviour
{
    //引用
    public SpriteRenderer sr;//组件
    public Sprite[] pic;//图片
    // Start is called before the first frame update
    void Start()
    {
        sr = GetComponent<SpriteRenderer>();//获取组件
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Alpha0))//当按下数字0时
        {
            sr.sprite = pic[0];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha1))//当按下数字1时
        {
            sr.sprite = pic[1];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha2))//当按下数字2时
        {
            sr.sprite = pic[2];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha3))//当按下数字3时
        {
            sr.sprite = pic[3];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha4))//当按下数字4时
        {
            sr.sprite = pic[4];
        }
        else if (Input.GetKeyDown(KeyCode.Alpha5))//当按下数字5时
        {
            sr.sprite = pic[5];
        }
    }
}

以上是关于Unity-通过脚本修改图片sprite的主要内容,如果未能解决你的问题,请参考以下文章

Unity2D修改Sprite颜色和透明度

unity sprite pivot 怎么用代码 动态修改

unity5中怎样实时更换Sprite Renderer中的Sprite

unity中sprite是啥意思

unity EditorWindow 编辑器开发 Sprite 引用检索(二)

Unity学习笔记:Sprite切割图片及使用