c# - 如何从局部变量中保持位置?
问题描述
因此,我收到此错误“当前上下文中不存在变量?” line(30, 12),这无关紧要,我只想知道如何保持我的“for”拥有的位置并放入变量中。我需要这个,因为我正在尝试执行“Id”检查,正如您在代码中看到的那样(只需查找 idImagem 部分)。有没有办法做到这一点?顺便说一下,这是我的代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class RandomizarCartas : MonoBehaviour {
public Sprite[] _meusOutrosSprites;
private Image[] _images;
private int idImagem;
private int numeroSpriteInt;
public void Start()
{
_images = gameObject.GetComponentsInChildren<Image>();
StartCoroutine(Count());
}
IEnumerator Count()
{
for(int i = 0; i < _images.Length; i++)
{
var numeroSprite = Random.Range(0, _meusOutrosSprites.Length - 1);
_images[i].sprite = _meusOutrosSprites[numeroSprite];
}
yield return new WaitForSeconds(0);
}
public void PegarID(){
switch (numeroSprite){
case 0:
idImagem=1;
break;
case 1:
idImagem=2;
break;
case 2:
idImagem=3;
break;
case 3:
idImagem=4;
break;
case 4:
idImagem=5;
break;
default:
break;
}
public void LetraA(){
if(idImagem==1){
SceneManager.LoadScene("Sucesso");
}else{
SceneManager.LoadScene("Fases");
}
}
public void LetraB(){
if(idImagem==2){
SceneManager.LoadScene("Sucesso");
}else{
SceneManager.LoadScene("Fases");
}
}
public void LetraC(){
if(idImagem==3){
SceneManager.LoadScene("Sucesso");
}else{
SceneManager.LoadScene("Fases");
}
}
public void LetraD(){
if(idImagem==4){
SceneManager.LoadScene("Sucesso");
}else{
SceneManager.LoadScene("Fases");
}
}
public void LetraE(){
if(idImagem==5){
SceneManager.LoadScene("Sucesso");
}else{
SceneManager.LoadScene("Fases");
}
}
public void LetraF(){
if(idImagem==6){
SceneManager.LoadScene("Sucesso");
}else{
SceneManager.LoadScene("Fases");
}
}
}
解决方案
numeroSprite
is declared as local variable inside of IEnumerator Count()
. It doesn't exist outside of that method. If you want to be able to access it in another method make it a private variable:
private int numeroSprite;
private IEnumerator Count()
{
for(int i = 0; i < _images.Length; i++)
{
var numeroSprite = Random.Range(0, _meusOutrosSprites.Length - 1);
_images[i].sprite = _meusOutrosSprites[numeroSprite];
}
yield return new WaitForSeconds(0);
}
public void PegarID(){
switch (numeroSprite){
// ...
or use the numeroSpriteInt
you already declared but never used just the same way.
private int numeroSpriteInt;
private IEnumerator Count()
{
for (int i = 0; i < _images.Length; i++)
{
numeroSpriteInt = Random.Range(0, _meusOutrosSprites.Length - 1);
_images[i].sprite = _meusOutrosSprites[numeroSprite];
}
yield return new WaitForSeconds(0);
}
public void PegarID(){
switch (numeroSpriteInt){
// ...
As Programmer already sayd in your case
s you rather want to do
idImage = XY;
Instead of your whole switch thing to me it looks way more reasonable to just use something like
if(numeroSprite >=0 && numeroSprite <=10)
{
idImage = numeroSprite + 1;
}
推荐阅读
- mediawiki - MediaWiki API 从文章的另见部分获取所有链接
- python - 蟒蛇硒。下载后如何切换回上一个窗口/标签打开一个新标签
- python - 尝试拟合我的模型时出现“ValueError:形状 (64, 4) 和 (64, 10) 不兼容”
- github - 如何不将“.env”文件推送到 Github 存储库?
- python - 我对 django-mptt 有问题。我是第一次使用 django-mptt,但出现以下错误
- javascript - 无法更改我正在获取的 API url 的页码 (JavaScript)
- timer - 翻转中断是什么意思?
- cron - 如何从 8:20-23:00 每小时每 20 分钟运行一次 CronJob?
- android - 我的回收站视图是空的,即使它包含数据
- javascript - 如何更改/隐藏/删除 Qt Installer 的标题?