在 Unity 中从 C# 更改切换图像

Change toggle image form C# in Unity

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

我认为,我只能使用脚本 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 - 也没有给出结果并报错:

You must have a Image target in order to use a sprite swap transition.

如果你想在切换 on/off 时使用自定义图像,你可以使用这个: 在检查器中或通过脚本删除 Toggle 组件中对图形的引用

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;
}

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