Menu Jogos, Botão Continuar.
2 participantes
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Menu Jogos, Botão Continuar.
Boa Noite pessoal do fórum, queria uma ajuda aqui para colocar um botão continuar no menu principal do jogo. só que este botão só apareceria se ja existisse um salve do jogo.
Essa seria o menu quando não houvesse nenhum salve do jogo.
-----------------------------------------//----------------------------------
E essa seria quando houvesse um salve(desenhei no Paint).
Para criar algo assim teria que criar 2 modelos de menus diferentes e uma condição para 1 dos 2 serem ativados ou criaria uma condição para mudar os botões de lugar e adicionar o continuar? seria IF, ou Bool? sou novo em programação e ainda não estou entendendo muito bem, se alguem poder me ajudar mesmo que pouco agradeço muito :D :D .
Essa seria o menu quando não houvesse nenhum salve do jogo.
-----------------------------------------//----------------------------------
E essa seria quando houvesse um salve(desenhei no Paint).
Para criar algo assim teria que criar 2 modelos de menus diferentes e uma condição para 1 dos 2 serem ativados ou criaria uma condição para mudar os botões de lugar e adicionar o continuar? seria IF, ou Bool? sou novo em programação e ainda não estou entendendo muito bem, se alguem poder me ajudar mesmo que pouco agradeço muito :D :D .
leandroinforware- Membro
- PONTOS : 3011
REPUTAÇÃO : 1
Idade : 26
Áreas de atuação : Aprendiz C# & Unity 3D
Respeito as regras :
Re: Menu Jogos, Botão Continuar.
- Código:
//Original Scripts by IIColour (IIColour_Spectrum)
//Modificações Leandro
using UnityEngine;
using System.Collections;
public class MainMenuHandler : MonoBehaviour {
public int selecaoButao = 0,salveSelecao = 0;
public Texture botaoSelecao, botaoEfeitoEscurecer;
private GameObject painelInformacoesSalve, BtContinuar;
private GUITexture[] button = new GUITexture[3], buttonHighlight = new GUITexture[3], equipe = new GUITexture[6];
private GUIText[] buttonText = new GUIText[3], buttonTextShadow = new GUIText[3];
private GUIText fileNumbersText, fileNumbersTextShadow, fileSelected, mapNameText, mapNameTextShadow, dataText,dataTextShadow;
void Awake(){
//SalveLoad é uma string publica que está no script que faz o carregamente do salve
SaveLoad.Load();
painelInformacoesSalve = transform.FindChild("Salves").gameObject;
BtContinuar = transform.FindChild("Continar").gameObject;
//botao continuar
Transform newGameButton = transform.FindChild("Novo Jogo");
//botão novo jogo
Transform settingsButton = transform.FindChild("Opções");
//botão opções
Transform[] buttonTransforms = new Transform[]{
BtContinuar.transform,
newGameButton,
settingsButton};
for(int i = 0; i < 3; i++){
button[i] = buttonTransforms[i].FindChild("ButtonTexture").GetComponent<GUITexture>();
buttonHighlight[i] = buttonTransforms[i].FindChild("ButtonHighlight").GetComponent<GUITexture>();
buttonText[i] = buttonTransforms[i].FindChild("Text").GetComponent<GUIText>();
buttonTextShadow[i] = buttonText[i].transform.FindChild("TextShadow").GetComponent<GUIText>();
}
fileNumbersText = BtContinuar.transform.FindChild("FileNumbers").GetComponent<GUIText>();
fileNumbersTextShadow = fileNumbersText.transform.FindChild("FileNumbersShadow").GetComponent<GUIText>();
fileSelected = fileNumbersText.transform.FindChild("FileSelected").GetComponent<GUIText>();
mapNameText = painelInformacoesSalve.transform.FindChild("MapName").GetComponent<GUIText>();
mapNameTextShadow = mapNameText.transform.FindChild("MapNameShadow").GetComponent<GUIText>();
dataText = painelInformacoesSalve.transform.FindChild("DataText").GetComponent<GUIText>();
dataTextShadow = dataText.transform.FindChild("DataTextShadow").GetComponent<GUIText>();
for(int i = 0; i < 6; i++){
equipe[i] = painelInformacoesSalve.transform.FindChild("Equipe" + i).GetComponent<GUITexture>();
}
}
void Start(){
StartCoroutine(control());
}
private void updateButton(int newButtonIndex){
if (newButtonIndex != selecaoButao)
{
button[selecaoButao].texture = botaoEfeitoEscurecer;
buttonHighlight[selecaoButao].enabled = false;
}
selecaoButao = newButtonIndex;
button[selecaoButao].texture = botaoSelecao;
buttonHighlight[selecaoButao].enabled = true;
}
private void updateFile(int newFileIndex){
salveSelecao = newFileIndex;
Vector2[] highlightPositions = new Vector2[]{
new Vector2(132,143),
new Vector2(147,143),
new Vector2(162,143)};
fileSelected.pixelOffset = highlightPositions[salveSelecao];
fileSelected.text = "" + (salveSelecao + 1);
if (SaveLoad.savedGames[salveSelecao] != null)
{
int badgeTotal = 0;
for(int i = 0; i < 12; i++){
if (SaveLoad.savedGames[salveSelecao].gymsBeaten[i])
{
badgeTotal += 1;}
}
string playerTime = "" + SaveLoad.savedGames[salveSelecao].playerMinutes;
if(playerTime.Length == 1){
playerTime = "0" + playerTime;}
playerTime = SaveLoad.savedGames[salveSelecao].playerHours + " : " + playerTime;
mapNameText.text = SaveLoad.savedGames[salveSelecao].mapName;
mapNameTextShadow.text = mapNameText.text;
dataText.text = SaveLoad.savedGames[salveSelecao].playerName
+"\n"+ badgeTotal
+"\n"+ "0" //Pokedex not yet implemented
+"\n"+ playerTime;
dataTextShadow.text = dataText.text;
for(int i = 0; i < 6; i++){
if (SaveLoad.savedGames[salveSelecao].PC.boxes[0][i] != null)
{
equipe[i].texture = SaveLoad.savedGames[salveSelecao].PC.boxes[0][i].GetIcons();
}
else{
equipe[i].texture = null;}
}
}
}
private IEnumerator animateIcons(){
while(true){
for(int i = 0; i < 6; i++){
equipe[i].border = new RectOffset(32,0,0,0);}
yield return new WaitForSeconds(0.15f);
for(int i = 0; i < 6; i++){
equipe[i].border = new RectOffset(0,32,0,0);}
yield return new WaitForSeconds(0.15f);
}
}
public IEnumerator control(){
int fileCount = SaveLoad.getSavedGamesCount();
if(fileCount == 0){
updateButton(1);
BtContinuar.SetActive(false);
painelInformacoesSalve.SetActive(false);
for(int i = 1; i < 3; i++){
button[i].pixelInset = new Rect(button[i].pixelInset.x, button[i].pixelInset.y + 64f, button[i].pixelInset.width, button[i].pixelInset.height);
buttonHighlight[i].pixelInset = new Rect(buttonHighlight[i].pixelInset.x, buttonHighlight[i].pixelInset.y + 64f, buttonHighlight[i].pixelInset.width, buttonHighlight[i].pixelInset.height);
buttonText[i].pixelOffset = new Vector2(buttonText[i].pixelOffset.x, buttonText[i].pixelOffset.y + 64f);
buttonTextShadow[i].pixelOffset = new Vector2(buttonTextShadow[i].pixelOffset.x, buttonTextShadow[i].pixelOffset.y + 64f);
}
}
else{
updateButton(0);
updateFile(0);
StartCoroutine(animateIcons());
if(fileCount == 1){
fileNumbersText.text = "File 1";}
else if(fileCount == 2){
fileNumbersText.text = "File 1 2";}
else if(fileCount == 3){
fileNumbersText.text = "File 1 2 3";}
}
bool running = true;
while(running){
if(Input.GetButtonDown("Select")){
if (selecaoButao == 0)
{ //CONTINUE
//yield return new WaitForSeconds(sceneTransition.FadeOut(0.4f));
yield return StartCoroutine(ScreenFade.main.Fade(false, 0.4f));
SaveData.currentSave = SaveLoad.savedGames[salveSelecao];
Debug.Log(SaveLoad.savedGames[0]);
Debug.Log(SaveLoad.savedGames[1]);
Debug.Log(SaveLoad.savedGames[2]);
GlobalVariables.global.playerPosition = SaveData.currentSave.playerPosition.v3;
GlobalVariables.global.playerDirection = SaveData.currentSave.playerDirection;
Application.LoadLevel(SaveData.currentSave.levelName);
}
else if (selecaoButao == 1)
{ //NEW GAME
//yield return new WaitForSeconds(sceneTransition.FadeOut(0.4f));
yield return StartCoroutine(ScreenFade.main.Fade(false, 0.4f));
SaveData.currentSave = new SaveData(fileCount);
GlobalVariables.global.SetDEBUGFileData();
GlobalVariables.global.playerPosition = new Vector3(78,0,29);
GlobalVariables.global.playerDirection = 2;
GlobalVariables.global.fadeIn = true;
Application.LoadLevel("indoorsNW");
}
else if (selecaoButao == 2)
{ //SETTINGS
//yield return new WaitForSeconds(sceneTransition.FadeOut(0.4f));
yield return StartCoroutine(ScreenFade.main.Fade(false, 0.4f));
Scene.main.Settings.gameObject.SetActive(true);
StartCoroutine(Scene.main.Settings.control());
while(Scene.main.Settings.gameObject.activeSelf){
yield return null;}
//yield return new WaitForSeconds(sceneTransition.FadeIn(0.4f));
yield return StartCoroutine(ScreenFade.main.Fade(true, 0.4f));
}
}
else if(Input.GetKeyDown(KeyCode.Delete)){ //delete save file
float time = Time.time;
bool released = false;
Debug.Log("Save " + (salveSelecao + 1) + " will be deleted! Release 'Delete' key to prevent this!");
while(Time.time < time+4 && !released){
if(Input.GetKeyUp(KeyCode.Delete)){
released = true;}
yield return null;}
if(Input.GetKey(KeyCode.Delete) && !released){
SaveLoad.resetSaveGame(salveSelecao);
Debug.Log("Save " + (salveSelecao + 1) + " was deleted!");
yield return new WaitForSeconds(1f);
Application.LoadLevel(Application.loadedLevel);
}
else{
Debug.Log("'Delete' key was released!");
}
}
else{
if(Input.GetAxisRaw("Vertical") > 0){
float minimumButton = (BtContinuar.activeSelf) ? 0 : 1;
if (selecaoButao > minimumButton)
{
updateButton(selecaoButao - 1);
yield return new WaitForSeconds(0.2f);
}
}
else if(Input.GetAxisRaw("Vertical") < 0){
if (selecaoButao < 2)
{
updateButton(selecaoButao + 1);
yield return new WaitForSeconds(0.2f);
}
}
if(Input.GetAxisRaw("Horizontal") > 0){
if (selecaoButao == 0)
{
if (salveSelecao < fileCount - 1)
{
updateFile(salveSelecao + 1);
yield return new WaitForSeconds(0.2f);
}
}
}
else if(Input.GetAxisRaw("Horizontal") < 0){
if (selecaoButao == 0)
{
if (salveSelecao > 0)
{
updateFile(salveSelecao - 1);
yield return new WaitForSeconds(0.2f);
}
}
}
}
yield return null;
}
}
}
eu encontrei esse codigo de outro jogo que um youtuber gringo disponibilizou e o menu dele é igual ao que eu quero, só que eu achei o codigo um pouco dificil de entender e tambem tem muitas citações de variaveis que estão em outros arquivos de codigos, se alguem poder me ajudar.
leandroinforware- Membro
- PONTOS : 3011
REPUTAÇÃO : 1
Idade : 26
Áreas de atuação : Aprendiz C# & Unity 3D
Respeito as regras :
Re: Menu Jogos, Botão Continuar.
Cara, o que você tem que fazer é um simples if perguntando se já existe alguma chave de save game... tente dar uma olhada neste tutorial para entender melhor:
No PlayerPrefs, que é a parte que faz o save, existe um comando chamado "haskey", que pergunta se já existe algum espaço na memória com o nome que você requisitou... se já existe, significa que já tem um salve.
Seria algo parecido com o que eu uso na void START neste tutorial:
https://www.schultzgames.com/t816-tutorial-menu-principal-unity-5-5-3-ou-superior-com-ui?highlight=menu
se existe alguma key, eu resgato o seu valor.
O que você teria que fazer, é apenas ativar o botão de "continuar" caso esta chave já exista.
No PlayerPrefs, que é a parte que faz o save, existe um comando chamado "haskey", que pergunta se já existe algum espaço na memória com o nome que você requisitou... se já existe, significa que já tem um salve.
Seria algo parecido com o que eu uso na void START neste tutorial:
https://www.schultzgames.com/t816-tutorial-menu-principal-unity-5-5-3-ou-superior-com-ui?highlight=menu
se existe alguma key, eu resgato o seu valor.
O que você teria que fazer, é apenas ativar o botão de "continuar" caso esta chave já exista.
Re: Menu Jogos, Botão Continuar.
- Código:
if (PlayerPrefs.HasKey ("NomeJogador"))
{
SceneManager.LoadScene ("Menu1");
}
else
SceneManager.LoadScene ("Menu2");
deu certo cara vlw,
eu criei 2 menus e uma cena e entrada e coloquei uma condição na cena de entrada que se existisse uma chave com nome do jogador ele abrisse o menu com o botão continuar e se não existisse ele abria o menu sem o botão.
leandroinforware- Membro
- PONTOS : 3011
REPUTAÇÃO : 1
Idade : 26
Áreas de atuação : Aprendiz C# & Unity 3D
Respeito as regras :
Tópicos semelhantes
» Pause Menu: botões de "Restart" e "Menu"
» Menu Principal com Load Game e Menu de Pause com Save Game?
» App continuar rodando (Android)
» Continuar contanto o tempo apos sair do jogo
» sistema de "Continuar" estilo fliperama "continue"
» Menu Principal com Load Game e Menu de Pause com Save Game?
» App continuar rodando (Android)
» Continuar contanto o tempo apos sair do jogo
» sistema de "Continuar" estilo fliperama "continue"
SchultzGames :: UNITY 3D :: Resolvidos
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos