C#/Unity中转换类型的问题
我正在做一个Unity项目,它有一个画布,上面有四个UI按钮对象。加载画布时,我希望脚本检查每个按钮,查看是否有相应的图像文件保存在本地驱动器中,如果有,则在按钮上显示该图像-这是通过GetPictureandShowIt()实现的,它适用于单个按钮 我遇到的问题是,在尝试循环使用每个不同的按钮时。下面的脚本成功地正确地循环了按钮名称(这些名称都已使用必要的标记设置),但我无法使用以下命令设置具有适当名称的按钮变量:button=getCount[ButtonNumber]因此GetPictureandShowIt()方法无法将图像应用于“下一步”按钮。我遇到一个错误,无法将类型“UnityEngine.GameObject”隐式转换为“UnityEngine.UI.Button” 我在Unity/C#还是比较新的,所以如果这是一个直截了当的回答,我深表歉意C#/Unity中转换类型的问题,c#,unity3d,C#,Unity3d,我正在做一个Unity项目,它有一个画布,上面有四个UI按钮对象。加载画布时,我希望脚本检查每个按钮,查看是否有相应的图像文件保存在本地驱动器中,如果有,则在按钮上显示该图像-这是通过GetPictureandShowIt()实现的,它适用于单个按钮 我遇到的问题是,在尝试循环使用每个不同的按钮时。下面的脚本成功地正确地循环了按钮名称(这些名称都已使用必要的标记设置),但我无法使用以下命令设置具有适当名称的按钮变量:button=getCount[ButtonNumber]因此GetPictur
public class LoadImages : MonoBehaviour
{
public Button button;
public FloatVariable FrameNumber;
public StringVariable GalleryName;
int ButtonNumber = 0;
int ButtonMax;
private GameObject[] getCount;
void Start()
{
getCount = GameObject.FindGameObjectsWithTag("Frame");
ButtonMax = getCount.Length;
while (ButtonNumber <= ButtonMax)
{
button = getCount[ButtonNumber];
GetPictureAndShowIt();
Debug.Log("Frame#: " + getCount[ButtonNumber]);
FrameNumber.value++;
ButtonNumber++;
}
}
...
public类LoadImages:monobhavior
{
公共按钮;
公共浮点数;
公共字符串变量GalleryName;
int ButtonNumber=0;
int按钮最大值;
私有游戏对象[]getCount;
void Start()
{
getCount=GameObject.FindGameObjectsSwithTag(“帧”);
ButtonMax=getCount.Length;
使用GameObject.FindGameObjectsWithTag(“Frame”);
时(按钮编号),您得到的是GameObject
而不是按钮类型。请检查
也许你需要:
button=getCount[ButtonNumber].GetComponent();
如果按钮组件在该游戏对象中。如果button
是一个gameobject
,则可以使用button=(button)getCount[ButtonNumber];
进行强制转换。或者将数组声明为private button[]getCount;
以避免此问题。