首页 > 解决方案 > 在 Unity 中更改切换图像表单 C#

问题描述

我创建了一个带有四个切换的切换组,并安装了交换图像以突出显示。结果,我希望切换图像具有四种状态 - 背景、突出显示、真和假。

我认为,我只能使用脚本 C# 来做到这一点。我尝试使用toggle.targetGrafictoggle.grafic不起作用。

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

public class LoadQuestion : MonoBehaviour
{
    public Toggle toggleA;
    public Toggle toggleB;
    public Toggle toggleC;
    public Toggle toggleD;
    public Image trueA;
    public Image falseA;
    public Image backA;

    public void CheckAnswer()
    {
        if ( toggleA.isOn )
        {
            toggleA.targetGraphic = trueA; //Resources.Load("Sprites/logo") as Image;
        }
    }
}

CheckAnswer()我被导入引擎中的 On Value Changed (Boolean)。 Resources.Load- 也不给出结果和报告错误:

您必须有一个 Image 目标才能使用精灵交换过渡。

标签: c#unity3dtoggle

解决方案


如果您想在切换开/关时拥有自定义图像,您可以使用:Remove reference to graphics in Toggle component in inspector or by script

toggleA.graphic = null;

引用作为该图形组件的Image并通过脚本更改该图像的 sprite;

public Toggle toggleA;
public Image toggleAImage;
public Sprite trueA;
public Sprite falseA;
private bool isOn;

private void Start()
{
    toggleA.graphic = null;
}

public void CheckAnswer()
{
    toggleAImage.sprite = isOn ? trueA : falseA;
    isOn = !isOn;
}

不确定您要对背景和突出显示做什么,但您可以在 Toggle 组件的检查器中设置这些条件。请记住,该切换由 2 个元素组成:背景图像和“检查”图像。您只能在检查器中为背景设置突出显示的状态精灵交换。我上面的代码用于“检查”图像。


推荐阅读