Preciso de ajuda para substituir valor de variavel em outro script
4 participantes
Página 1 de 1
Preciso de ajuda para substituir valor de variavel em outro script
Ola a todos. Estou com um problema, preciso de ajuda, preciso substituir valores de variáveis em outro script de outro objeto.
O codigo abaixo é do script que precisa ser alterado por outro.
if (boxID == "Gold100")
{
gold += 100;
// aqui o valor da variável gold seria substituido por outro valor através de outro script
Gold.text = gold.ToString();
}
if (boxID == "Gold250")
{
gold += 250;
// aqui o valor da variável gold seria substituido por outro valor através de outro script
Gold.text = gold.ToString();
}
if (boxID == "Gold800")
{
gold += 800;
// aqui o valor da variável gold seria substituído por outro valor através de outro script
O codigo abaixo é do script que precisa ser alterado por outro.
if (boxID == "Gold100")
{
gold += 100;
// aqui o valor da variável gold seria substituido por outro valor através de outro script
Gold.text = gold.ToString();
}
if (boxID == "Gold250")
{
gold += 250;
// aqui o valor da variável gold seria substituido por outro valor através de outro script
Gold.text = gold.ToString();
}
if (boxID == "Gold800")
{
gold += 800;
// aqui o valor da variável gold seria substituído por outro valor através de outro script
Robins Sandi- Iniciante
- PONTOS : 475
REPUTAÇÃO : 1
Respeito as regras :
Re: Preciso de ajuda para substituir valor de variavel em outro script
Robins Sandi escreveu:Ola a todos. Estou com um problema, preciso de ajuda, preciso substituir valores de variáveis em outro script de outro objeto.
O codigo abaixo é do script que precisa ser alterado por outro.
if (boxID == "Gold100")
{
gold += 100;
// aqui o valor da variável gold seria substituido por outro valor através de outro script
Gold.text = gold.ToString();
}
if (boxID == "Gold250")
{
gold += 250;
// aqui o valor da variável gold seria substituido por outro valor através de outro script
Gold.text = gold.ToString();
}
if (boxID == "Gold800")
{
gold += 800;
// aqui o valor da variável gold seria substituído por outro valor através de outro script
Crie um novo script ou no script que deseja fazer o comando faça algo mais ou menos assim não sei o nome do seu script do "golds" ou comparta o script completo, espero que a dica te ajude.
- Código:
public class ScriptDemo : MonoBehaviour
{
public GoldManager goldManagerReference; // Arraste aqui o seu script de Gold por exemplo,
private void Start()
{
// Se você estiver fazendo referência a um objeto que contém o script GoldManager
// goldManagerReference = otherGameObject.GetComponent<GoldManager>();
}
public void UpdateGold()
{
// Substituir o valor de gold no script GoldManager
goldManagerReference.AddGold(500); // Substitua 500 pelo valor desejado por exemplo se quiser pode criar variaveis publicas usar Random etc.
}
// Outro exemplo enviando o valor junto a função.
public void UpdateGoldAmount(int Amount)
{
// Substituir o valor de gold no script GoldManager
goldManagerReference.AddGold(Amount);
}
}
gbxstudios- Iniciante
- PONTOS : 350
REPUTAÇÃO : 2
Respeito as regras :
Re: Preciso de ajuda para substituir valor de variavel em outro script
Vou postar os dois scripts completos para entender melhor , o primeiro script ''Aumentar'' na parte comentada referente aos valores terao que modificar os valores das variaveis de cada linha referida do outro escript ''BoxWinPriceDemo.
- Código:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
public class Aumentar : MonoBehaviour
{
//public GoldManager goldManagerReference;
private Text score;
private int scoreAmount;
public TextMeshPro parte0;
public TextMeshPro parte1;
// public TextMeshPro parte2;
//public TextMeshPro parte3;
public TextMeshPro parte4;
public TextMeshPro parte5;
public TextMeshPro parte6;
// public TextMeshPro parte7;
public TextMeshPro parte9;
void Start()
{
scoreAmount = 0;
score = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
score.text = scoreAmount.ToString();
if(scoreAmount<1)
{
scoreAmount = 1;
parte0.text = "2";
// esse resultado teria que mudar a variavel do outro script
parte1.text = "0.1";
// esse resultado teria que mudar a variavel do outro script
parte4.text = "0.3";
// esse resultado teria que mudar a variavel do outro script
parte5.text = "4";
// e assim por diante..
parte6.text = "3";
//
parte9.text = "0.3";
//
}
if(scoreAmount>2)
{
parte0.text = "4";
parte1.text = "0.5";
parte4.text = "0.6";
parte5.text = "8";
parte6.text = "6";
parte9.text = "0.6";
}
if (scoreAmount>3)
{
parte0.text = "8";
parte1.text = "1";
parte4.text = "1.2";
parte5.text = "12";
parte6.text = "12";
parte9.text = "0.9";
}
if (scoreAmount > 4)
{
parte0.text = "8";
parte1.text = "1.5";
parte4.text = "2";
parte5.text = "24";
parte6.text = "12";
parte9.text = "0.9";
}
if (scoreAmount > 5)
{
parte0.text = "12";
parte1.text = "2.5";
parte4.text = "3";
parte5.text = "48";
parte6.text = "16";
parte9.text = "1,2";
}
if (scoreAmount > 6)
{
parte0.text = "18";
parte1.text = "3";
parte4.text = "6";
parte5.text = "90";
parte6.text = "32";
parte9.text = "2.4";
}
if (scoreAmount > 7)
{
parte0.text = "36";
parte1.text = "6";
parte4.text = "12";
parte5.text = "180";
parte6.text = "64";
parte9.text = "2.8";
}
if (scoreAmount > 8)
{
scoreAmount = 8;
}
}
public void AddValor()
{
scoreAmount += 1;
}
public void SubtrairValor()
{
scoreAmount -= 1;
}
}
Robins Sandi- Iniciante
- PONTOS : 475
REPUTAÇÃO : 1
Respeito as regras :
Re: Preciso de ajuda para substituir valor de variavel em outro script
o Segundo script é o que devera ter o valor alterado
- Código:
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class BoxWinPriceDemoScene : MonoBehaviour
{
public TextMeshProUGUI Gold;
public int gold;
private void Start()
{
gold = PlayerPrefs.GetInt("Gold");
}
public void PlayerReward(string boxID)
{
Debug.Log($"Box ID, hit by the wheel : {boxID}");
//Gold reward
GoldReward(boxID);
}
private void GoldReward(string boxID)
{
gold = PlayerPrefs.GetInt("Gold");
if (boxID == "Gold1")
{
gold += 1;
// aqui o gold seria substituido por outro valor atraves de outro script 'Aumentar''
Gold.text = gold.ToString();
}
if (boxID == "Gold100")
{
gold += 100;
// aqui o gold seria substituido por outro valor atraves de outro script 'Aumentar''
Gold.text = gold.ToString();
}
if (boxID == "Gold250")
{
gold += 800;
// aqui o gold seria substituido por outro valor atraves de outro script 'Aumentar''
Gold.text = gold.ToString();
}
if (boxID == "Gold800")
{
gold += 800;
// aqui o gold seria substituido por outro valor atraves de outro script 'Aumentar''
Gold.text = gold.ToString();
}
PlayerPrefs.SetInt("Gold", gold);
}
}
Robins Sandi- Iniciante
- PONTOS : 475
REPUTAÇÃO : 1
Respeito as regras :
Re: Preciso de ajuda para substituir valor de variavel em outro script
Obs; eu comentei no segundo script ==> "// aqui o gold seria substituido por outro valor atraves de outro script 'Aumentar''"
pra nao ficar confuso eu quis dizer , o valor do gold seria substituido por outro valor .
pra nao ficar confuso eu quis dizer , o valor do gold seria substituido por outro valor .
Robins Sandi- Iniciante
- PONTOS : 475
REPUTAÇÃO : 1
Respeito as regras :
Re: Preciso de ajuda para substituir valor de variavel em outro script
[list=linenums]
[*]Ola,
gbxstudios eu tentei adaptar alguns comandos do codigo que vc me passou
[*] nao consegui , qual seria o mais apropriado para o caso dos dois scripts completos
[*] que postei, até porque sao valores diferentes para cada linha como vc pode ver dai fica complexo pra mim.
[/list]
[*]Ola,
gbxstudios eu tentei adaptar alguns comandos do codigo que vc me passou
[*] nao consegui , qual seria o mais apropriado para o caso dos dois scripts completos
[*] que postei, até porque sao valores diferentes para cada linha como vc pode ver dai fica complexo pra mim.
[/list]
Robins Sandi- Iniciante
- PONTOS : 475
REPUTAÇÃO : 1
Respeito as regras :
Re: Preciso de ajuda para substituir valor de variavel em outro script
boa tarde, vou seguir com alguns conselhos:
Seu código não está seguindo corretamente a abordagem para alteração de um script em outro.
1º - script1 deve ter uma variável referência à script2;
2º - script1 só poderá alterar uma variável que existe em script2, o que não ocorre aqui:
3º- tendo essas variáveis com permissão: Public, o acesso pelo outro script será permitido;
4º- seu script2 tem umas verificações de algum parâmetro String boxID de uma função, para fazer a checagem do que quer alterar, no entanto no script1 nenhuma vez chamastes a função que tem esse parâmetro para checar essa verificação.
Dessa forma o jeito correto seria em script2 ter uma variável string MeuString, que seria checado via update: if(MeuString!=""){GoldReward(MeuString)}
assim ele vai checar caso a variável MeuString não esteja vazia, se tem alguma string relacionada dentro da void GoldReward. No caso string1 apenas mandaria o nome para MeuString em string2;
lembre-se de criar uma Referência de acesso a Script2 no Script1;
Seu código não está seguindo corretamente a abordagem para alteração de um script em outro.
1º - script1 deve ter uma variável referência à script2;
2º - script1 só poderá alterar uma variável que existe em script2, o que não ocorre aqui:
3º- tendo essas variáveis com permissão: Public, o acesso pelo outro script será permitido;
4º- seu script2 tem umas verificações de algum parâmetro String boxID de uma função, para fazer a checagem do que quer alterar, no entanto no script1 nenhuma vez chamastes a função que tem esse parâmetro para checar essa verificação.
Dessa forma o jeito correto seria em script2 ter uma variável string MeuString, que seria checado via update: if(MeuString!=""){GoldReward(MeuString)}
assim ele vai checar caso a variável MeuString não esteja vazia, se tem alguma string relacionada dentro da void GoldReward. No caso string1 apenas mandaria o nome para MeuString em string2;
lembre-se de criar uma Referência de acesso a Script2 no Script1;
Re: Preciso de ajuda para substituir valor de variavel em outro script
stratengine escreveu:boa tarde, vou seguir com alguns conselhos:
Seu código não está seguindo corretamente a abordagem para alteração de um script em outro.
1º - script1 deve ter uma variável referência à script2;
2º - script1 só poderá alterar uma variável que existe em script2, o que não ocorre aqui:
3º- tendo essas variáveis com permissão: Public, o acesso pelo outro script será permitido;
4º- seu script2 tem umas verificações de algum parâmetro String boxID de uma função, para fazer a checagem do que quer alterar, no entanto no script1 nenhuma vez chamastes a função que tem esse parâmetro para checar essa verificação.
Dessa forma o jeito correto seria em script2 ter uma variável string MeuString, que seria checado via update: if(MeuString!=""){GoldReward(MeuString)}
assim ele vai checar caso a variável MeuString não esteja vazia, se tem alguma string relacionada dentro da void GoldReward. No caso string1 apenas mandaria o nome para MeuString em string2;
lembre-se de criar uma Referência de acesso a Script2 no Script1;
Ola , obrigado pela orientação. Tentei aplicar mas do jeito que tinha que ser nao estava dando certo. Pois essa string tinha varios valores que mudavam varialvemente e realmente estava complicado de resolver. Depois de tanto quebrar a cabeça achei uma soluçao.[list=linenums][*]
- Código:
private void GoldReward(string boxID)[size=14][/size] {[size=14][/size] gold = PlayerPrefs.GetInt("Gold");[size=14][/size] if (boxID == "Gold1")[size=14][/size] {[size=14][/size]
int.TryParse(parte0.text, out int result);
Debug.Log("Current value: " + result);
pointHUD.Points += 2 * result;
pointHUD.PointsQuantia += 2 * result;
if (boxID == "Gold100")
{
int.TryParse(parte1.text, out int result);
Debug.Log("Current value: " + result);
pointHUD.Points += 2 * result;
pointHUD.PointsQuantia += 2 * result;
}
e assim por diante...
}
Entao o mais simples que fiz foi checar sempre o valor da string que aparece na tela que sempre varia e converter para uma variavel inteira
e multiplicar o resultado dessa string convertida para as variaveis de pontos. Entao assim que eu clico em um botao que
a string aumenta de valor o resultado sempre sera multiplicado por um valor da variável inteira. Era exatamente isso que eu queria.
Para isso eu tive que Serializar o script com outro script
[/list]
Robins Sandi- Iniciante
- PONTOS : 475
REPUTAÇÃO : 1
Respeito as regras :
Magnatah- Instrutor
- PONTOS : 3537
REPUTAÇÃO : 209
Idade : 24
Áreas de atuação : Dєรєиvσlvєdσя Wєb(Fяσит-єиd), Blєиdєя, υиiтy, C#, ρнρ є Jαvαรcяiρт.
Respeito as regras :
Tópicos semelhantes
» [Ajuda] Variavel não esta recebendo o valor do outro script
» Enviar valor de variável para outro script ao apertar um botão.
» Nao consigo alterar o valor da variavel de outro script
» [Ajuda] Preciso de ajuda para controlar e alterar o valor de Lerp de varios objetos
» Preciso de algúem para modificar um script, negociaremos o valor $
» Enviar valor de variável para outro script ao apertar um botão.
» Nao consigo alterar o valor da variavel de outro script
» [Ajuda] Preciso de ajuda para controlar e alterar o valor de Lerp de varios objetos
» Preciso de algúem para modificar um script, negociaremos o valor $
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos