c# - 一个脚本更改多个 UI 图像,但它不起作用
问题描述
我在尝试编写此代码时遇到问题。
我的目标:使每个级别按钮也具有该级别的排名,但我试图从一个脚本中做到这一点。
首先,这是我设置所有内容的方式:
这些是每个按钮内的等级以及我在每个等级游戏对象中制作的Rankdictator脚本。
这是Rankdictator的脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Rankdictator : MonoBehaviour
{
int levelnumberrank;
private Image thisimage;
public Sprite rankgold;
public Sprite ranksilver;
public Sprite rankbronze;
public Sprite blank;
private Levellockcheck levellockcheck;
public void Start()
{
levellockcheck = FindObjectOfType<Levellockcheck>();
thisimage = this.GetComponent<Image>();
levelnumberrank = PlayerPrefs.GetInt(("rankoflevel") + (levellockcheck.thisbuttonlevel));
if(levelnumberrank == 3)
{
thisimage.sprite = rankgold;
}
else if(levelnumberrank == 2)
{
thisimage.sprite = ranksilver;
}
else if (levelnumberrank == 1)
{
thisimage.sprite = rankbronze;
}
else if (levelnumberrank == 0)
{
thisimage.sprite = blank;
}
}
}
现在问题来了。正如我所说,当有多个按钮处于活动状态时,排名不会正确显示在每个按钮上,但是,当我只有一个按钮处于活动状态时,排名会显示。这是一个例子:
那是我同时激活两个按钮的时候。(1级应该是满级,2级应该是低级。但它什么都没有显示)
现在只有一个按钮处于活动状态。它正确显示。
编辑
我已经使用 Debug.Log 来确认每个按钮上的 levelnumberrank 并且它按预期引用。
但是,当所有按钮都处于活动状态时,它仍然不会引用每个按钮的排名,只有当一个按钮处于活动状态而其他按钮处于非活动状态时才会这样做。
解决方案
我发现了问题:这是 levellockcheck!
在每个按钮上,都有一个带有 public int thisbuttonlevel 的 levellockcheck 脚本。
在每个 Rankdictator 上,我都像这样引用 levellockcheck:
Levellockcheck = FindObjectofType<levellockcheck>();
levelnumberrank = PlayerPrefs.GetInt(("rankoflevel") + (levellockcheck.thisbuttonlevel));
通过这样做,我从每个按钮同时引用不同的数字。因为每个按钮上的 (thisbuttonlevel) 是不同的。
我应该在 Rankdictator 上做什么:
Levellockcheck = this.GetComponentInParent<levellockcheck>();
通过这样做,我引用了按钮本身的 (thisbuttonlevel)。
现在:
有用!
推荐阅读
- python - 通过 svgwrite 在 SVG 中垂直对齐
- reactjs - ReactJS 和 Webpack 模块联合应用程序在部署到云端时包含未定义的 url
- php - 简单的 DomDocument 和 GetElementsByTagName
- html - 是否可以一次使用样式(自动宽度或高度)调整 HTML 中的所有元素(标签)?
- c# - 是否可以将路由组件与 Blazor WASM 中的客户端应用程序放在单独的项目中?
- c# - 数据未出现在链接表中(子类别和产品)
- firebase - 如何在 expo 的 React Native 天才聊天中设置用户头像?
- python - FileNotFoundError:[Errno 2] 卡住
- regex - 简单的正则表达式未捕获捕获组
- java - 试图从类别等于字符串的firebase中检索数据