Passar informações de um script pro outro
2 participantes
Página 1 de 1
Passar informações de um script pro outro
- Código:
[size=14]using [i]System[/i].[i]Collections[/i];
using [i]System[/i].[i]Collections[/i].[i]Generic[/i];
using [i]UnityEngine[/i];
using [i]UnityEngine[/i].[i]UI[/i];
using [i]UnityEngine[/i].[i]SceneManagement[/i];
public class Loading : [i]MonoBehaviour[/i]
{
public [i]GameObject[/i] LoadScreen;
public [i]Image[/i] LoadinBar;
public [i]void[/i] LoadScene([i]int[/i] [i]sceneId[/i]){
StartCoroutine(LoadSceneAsync(sceneId));
}
[i]IEnumerator[/i] LoadSceneAsync([i]int[/i] [i]sceneId[/i]){
[i]AsyncOperation[/i] operation = SceneManager.LoadSceneAsync(sceneId);
LoadScreen.SetActive(true);
while(!operation.isDone){
[i]float[/i] progressValue = Mathf.Clamp01(operation.progress / 0.9f);
LoadinBar.fillAmount = progressValue;
yield return null;
}
}
}
[/size]
- Código:
[size=14]using [i]System[/i].[i]Collections[/i];
using [i]System[/i].[i]Collections[/i].[i]Generic[/i];
using [i]UnityEngine[/i];
public class LoadSceneTrigger : [i]MonoBehaviour[/i]
{
public [i]int[/i] sceneName;
public [i]void[/i] OnTriggerEnter([i]Collider[/i] [i]collision[/i]) {
Loading.LoadScene(sceneName);
Debug.Log("colidiu");
}
}
[/size]
estou tentando passar a informação de qual cena vai carregar pro outro script, mas na unity tá dando esse erro
thiagograssi- MembroAvançado
- PONTOS : 3392
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Re: Passar informações de um script pro outro
Não tem como voce acessar os componentes de outra classe sem uma instância dela sem um modificador static, é justamente pra isso que ele serve. O erro diz que o metodo não é static. No script Loading deixe seu metodo loadscene assim:
obs: Aperte Ctrl+Shift+V pra colar seu script limpo, sem esses [\i] e [size]
- Código:
public static void LoadScene(int sceneId){
StartCoroutine(LoadSceneAsync(sceneId));
}
obs: Aperte Ctrl+Shift+V pra colar seu script limpo, sem esses [\i] e [size]
Pokedlg- ProgramadorMaster
- PONTOS : 2355
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Passar informações de um script pro outro
obrigado pela resposta, eu imaginei, e tbm tentei fazer isso, porém deu esse erroPokedlg escreveu:Não tem como voce acessar os componentes de outra classe sem uma instância dela sem um modificador static, é justamente pra isso que ele serve. O erro diz que o metodo não é static. No script Loading deixe seu metodo loadscene assim:
- Código:
public static void LoadScene(int sceneId){
StartCoroutine(LoadSceneAsync(sceneId));
}
obs: Aperte Ctrl+Shift+V pra colar seu script limpo, sem esses [\i] e [size]
thiagograssi- MembroAvançado
- PONTOS : 3392
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Re: Passar informações de um script pro outro
A sim, as variveis e metodos dentro de um metodo static devem ser static tambem, e a sua rotina é privada e voce faz a chamada dela no LoadScene. Voce pode fazer 2 coisas, ou faz a instancia da classe Loading no LoadSceneTrigger ou deixe os membros da classe Loading todos staticos, porém caso opte pelo 2° voce teria que fazer referencia dos objetos no proprio script...
Tente o 1° fazendo assim:
Tente o 1° fazendo assim:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Loading : MonoBehaviour
{
public GameObject LoadScreen;
public Image LoadinBar;
public void LoadScene(int sceneId){
StartCoroutine(LoadSceneAsync(sceneId));
}
IEnumerator LoadSceneAsync(int sceneId){
AsyncOperation operation = SceneManager.LoadSceneAsync(sceneId);
LoadScreen.SetActive(true);
while(!operation.isDone){
float progressValue = Mathf.Clamp01(operation.progress / 0.9f);
LoadinBar.fillAmount = progressValue;
yield return null;
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadSceneTrigger : MonoBehaviour
{
public int sceneName;
public Loading _loading; //Arraste o GameObject que contem o Loading Scrpit
public void OnTriggerEnter(Collider collision) {
_loading.LoadScene(sceneName);
Debug.Log("colidiu");
}
}
Pokedlg- ProgramadorMaster
- PONTOS : 2355
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Re: Passar informações de um script pro outro
Funcionou perfeitamente, obrigado pela ajudaPokedlg escreveu:A sim, as variveis e metodos dentro de um metodo static devem ser static tambem, e a sua rotina é privada e voce faz a chamada dela no LoadScene. Voce pode fazer 2 coisas, ou faz a instancia da classe Loading no LoadSceneTrigger ou deixe os membros da classe Loading todos staticos, porém caso opte pelo 2° voce teria que fazer referencia dos objetos no proprio script...
Tente o 1° fazendo assim:
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;
public class Loading : MonoBehaviour
{
public GameObject LoadScreen;
public Image LoadinBar;
public void LoadScene(int sceneId){
StartCoroutine(LoadSceneAsync(sceneId));
}
IEnumerator LoadSceneAsync(int sceneId){
AsyncOperation operation = SceneManager.LoadSceneAsync(sceneId);
LoadScreen.SetActive(true);
while(!operation.isDone){
float progressValue = Mathf.Clamp01(operation.progress / 0.9f);
LoadinBar.fillAmount = progressValue;
yield return null;
}
}
}
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class LoadSceneTrigger : MonoBehaviour
{
public int sceneName;
public Loading _loading; //Arraste o GameObject que contem o Loading Scrpit
public void OnTriggerEnter(Collider collision) {
_loading.LoadScene(sceneName);
Debug.Log("colidiu");
}
}
thiagograssi- MembroAvançado
- PONTOS : 3392
REPUTAÇÃO : 43
Idade : 20
Áreas de atuação : Photoshop;
SketchUp;
C#(Learning);
Respeito as regras :
Tópicos semelhantes
» Como chamar animação sem passar por outro parâmetros?
» Como acessar variável de um script usando outro script (Entre e entenda).
» Problema com script para passar de fase
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Duvida personagem ao passar certo ponto quero q um objeto suma e outro apareça.
» Como acessar variável de um script usando outro script (Entre e entenda).
» Problema com script para passar de fase
» COMO DESATIVAR O SCRIPT "FisrtPersonController" DO PLAYER ATRAVÉS DE OUTRO SCRIPT
» Duvida personagem ao passar certo ponto quero q um objeto suma e outro apareça.
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos