Como acessar a função de um outro Script? (Unity)
2 participantes
Página 1 de 1
Como acessar a função de um outro Script? (Unity)
Já tentei de tudo, tenho dois scripts, um está associado ao objeto de um personagem e o outro eu apenas criei para pegar algumas informações como, velocidade do player, se o jogo está pausado e etc... esse não está associado a nada. Eu criei duas funções no scrpit do jogador, um get e um set, assim posso setar ou pegar o estado do jogo, se está pausado ou não, acontece que eu não consigo de maneira nenhuma acessar essas funções pelo script que eu criei.
Por exemplo:
Script associado ao jogador
Dai eu estou tentando acessar essas funções a partir de um script que criei, que não está associado a nada:
Bird bird;
Mas isso me lança uma exception, só quero acessar uma função e não consigo, alguém sabe como eu faço isso? Será que é porque eu preciso associar meu script a alguma coisa, tipo, só criar um objeto pra associar ele? O que eu faço pra acessar essa função?
Por exemplo:
Script associado ao jogador
- Código:
[size=14]public void SetGamePause(bool gamePause) {[/size]
[size=14] this.gamePause = gamePause;
}
bool GetGamePause() {
return gamePause;
}[/size]
Dai eu estou tentando acessar essas funções a partir de um script que criei, que não está associado a nada:
Bird bird;
- Código:
void Start() {
bird = new Bird();
}
private void Update() {
bird.SetGamePause(false);
}
Mas isso me lança uma exception, só quero acessar uma função e não consigo, alguém sabe como eu faço isso? Será que é porque eu preciso associar meu script a alguma coisa, tipo, só criar um objeto pra associar ele? O que eu faço pra acessar essa função?
PauloR2811- Iniciante
- PONTOS : 1098
REPUTAÇÃO : 3
Respeito as regras :
Re: Como acessar a função de um outro Script? (Unity)
Para conseguir acessar as funções voce poderia torna-las estaticas e nao precisaria instanciar a classe ou voce poderia criar um variavel public ou private e acessar normalmente as variaveis somente publicas e não privadas, como o Metodo GetGamePause que retorna a bool não poderá ser acessado pois ele é private e só pode portanto ser acessado por aquela classe, ou seja, por aquele script, então voce poderia fazer das seguintes maneiras:
Métodos Static:
Métodos, variaveis, funções, classes e etc. estaticas nao precisam ser instaciadas, portanto voce poderia fazer assim. Script Bird:
E então chamar as essas funções no outro script assim:
Instanciando o Script:
Voce pode apenas instanciar a classe e para isso não necessita de métodos static, eles teriam que ser publicos para poderem ser acessados. Exemplo.
*No script Bird:
E então no outro script voce precisaria instanciar esta classe, pois ela não é static, instanciando-a como uma variavel. Exemplo:
*No script que chamara as funções:
Voce também pode instanciar apenas para aquela função, exemplo, apenas na update, ou seja, não precisa ser uma "variavel" que atende a todas as funções, exemplo:
Se não funcionar voce poderá chamar aqui e mandar o erro
Métodos Static:
Métodos, variaveis, funções, classes e etc. estaticas nao precisam ser instaciadas, portanto voce poderia fazer assim. Script Bird:
- Código:
static bool gamePause;
public static void SetGamePause(bool gamePause) {
Bird.gamePause = gamePause;
}
public static bool GetGamePause() {
return gamePause;
}
E então chamar as essas funções no outro script assim:
- Código:
void Update() {
Bird.SetGamePause(false); //não precisou instanciar o script igual voce tinha feito na void Start()
}
Instanciando o Script:
Voce pode apenas instanciar a classe e para isso não necessita de métodos static, eles teriam que ser publicos para poderem ser acessados. Exemplo.
*No script Bird:
- Código:
public void SetGamePause(bool gamePause) {
this.gamePause = gamePause;
}
public bool GetGamePause() { //note que coloquei public
return gamePause;
}
E então no outro script voce precisaria instanciar esta classe, pois ela não é static, instanciando-a como uma variavel. Exemplo:
*No script que chamara as funções:
- Código:
private Bird bird;
//Nao precisa da void Start
private void Update() {
bird.SetGamePause(false);
}
Voce também pode instanciar apenas para aquela função, exemplo, apenas na update, ou seja, não precisa ser uma "variavel" que atende a todas as funções, exemplo:
- Código:
private void Update() {
Bird bird = new Bird();
bird.SetGamePause(false);
}
Se não funcionar voce poderá chamar aqui e mandar o erro
Pokedlg- ProgramadorMaster
- PONTOS : 2089
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: Como acessar a função de um outro Script? (Unity)
Todo esse problema porque esqueci de deixar a função SetGamePause com pública kkkk, mas valeu cara, sua resposta me ajudou a resolver o problema!Pokedlg escreveu:Para conseguir acessar as funções voce poderia torna-las estaticas e nao precisaria instanciar a classe ou voce poderia criar um variavel public ou private e acessar normalmente as variaveis somente publicas e não privadas, como o Metodo GetGamePause que retorna a bool não poderá ser acessado pois ele é private e só pode portanto ser acessado por aquela classe, ou seja, por aquele script, então voce poderia fazer das seguintes maneiras:
Métodos Static:
Métodos, variaveis, funções, classes e etc. estaticas nao precisam ser instaciadas, portanto voce poderia fazer assim. Script Bird:
- Código:
static bool gamePause;
public static void SetGamePause(bool gamePause) {
Bird.gamePause = gamePause;
}
public static bool GetGamePause() {
return gamePause;
}
E então chamar as essas funções no outro script assim:
- Código:
void Update() {
Bird.SetGamePause(false); //não precisou instanciar o script igual voce tinha feito na void Start()
}
Instanciando o Script:
Voce pode apenas instanciar a classe e para isso não necessita de métodos static, eles teriam que ser publicos para poderem ser acessados. Exemplo.
*No script Bird:
- Código:
public void SetGamePause(bool gamePause) {
this.gamePause = gamePause;
}
public bool GetGamePause() { //note que coloquei public
return gamePause;
}
E então no outro script voce precisaria instanciar esta classe, pois ela não é static, instanciando-a como uma variavel. Exemplo:
*No script que chamara as funções:
- Código:
private Bird bird;
//Nao precisa da void Start
private void Update() {
bird.SetGamePause(false);
}
Voce também pode instanciar apenas para aquela função, exemplo, apenas na update, ou seja, não precisa ser uma "variavel" que atende a todas as funções, exemplo:
- Código:
private void Update() {
Bird bird = new Bird();
bird.SetGamePause(false);
}
Se não funcionar voce poderá chamar aqui e mandar o erro
PauloR2811- Iniciante
- PONTOS : 1098
REPUTAÇÃO : 3
Respeito as regras :
Pokedlg- ProgramadorMaster
- PONTOS : 2089
REPUTAÇÃO : 198
Áreas de atuação : Iniciante: ShaderLab, Blender, Java, C++, ASP.NET.
Intermediário: C#.NET, Unity, Shader Graph.
Respeito as regras :
Tópicos semelhantes
» Como acessar variável de um script usando outro script (Entre e entenda).
» Como faço pra chamar a funçao de um script em outro ?
» Como acessar uma variável de outro script sem saber o objeto?
» Script faz a função tudo certo na unity, já quando gero apk o script não faz a função
» C# Unity 3d Como alterar 1 script usando outro
» Como faço pra chamar a funçao de um script em outro ?
» Como acessar uma variável de outro script sem saber o objeto?
» Script faz a função tudo certo na unity, já quando gero apk o script não faz a função
» C# Unity 3d Como alterar 1 script usando outro
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos