[Ajuda]Script de pausegame
3 participantes
Página 1 de 1
[Ajuda]Script de pausegame
Assim galera tenho tres menus,pause,construct,craft, ai tenho esse script que trava o cursor e deixa ele invisivel , ai queria que se algum dos menus estive ativo ele automaticamente ele ativa o mause e desabilitase a travação.Eu fis um esquema , mais so esta funcionando no menuPause , e no menu construct, o mause n ativa e distrava no menu craft!
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PauseGame : MonoBehaviour
{
private bool ShowguiP, pauseativado, constructativado, craftativado;
public GameObject PauseMenu, Player, inventario, MenuConstruct;
public Transform FPSController, Inventario1;
// Use this for initialization
void Start()
{
craftativado = false;
constructativado = false;
pauseativado = false;
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
ShowguiP = false;
PauseMenu.SetActive(false);
MenuConstruct.SetActive(false);
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
}
// Update is called once per frame
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
ShowguiP = !ShowguiP;
}
if (Input.GetKeyDown(KeyCode.X) && pauseativado == false)
{
constructativado = !constructativado;
}
if (Input.GetKeyDown(KeyCode.C) && pauseativado == false)
{
craftativado = !craftativado;
}
if (ShowguiP == true)
{
pauseativado = true;
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
PauseMenu.SetActive(true);
Time.timeScale = 0;
MenuConstruct.SetActive(false);
FPSController.GetComponent<FirstPersonController>().enabled = false;
Inventario1.GetComponent<Inventario>().enabled = false;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = false;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = false;
}
if (ShowguiP == false)
{
pauseativado = false;
if (constructativado == true || craftativado == true)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
Time.timeScale = 0;
FPSController.GetComponent<FirstPersonController>().enabled = false;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = false;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = false;
if (craftativado == false)
{
MenuConstruct.SetActive(true);
}
}
else if (constructativado == false || craftativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
MenuConstruct.SetActive(false);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
}
PauseMenu.SetActive(false);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
}
if (ShowguiP == false && constructativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
}
public void Continua()
{
ShowguiP = false;
pauseativado = false;
if (constructativado == true)
{
Cursor.lockState = CursorLockMode.None;
Cursor.visible = (true);
}
else
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
PauseMenu.SetActive(false);
MenuConstruct.SetActive(true);
Time.timeScale = 1;
FPSController.GetComponent<FirstPersonController>().enabled = true;
Inventario1.GetComponent<Inventario>().enabled = true;
GameObject.Find("HEROI").GetComponent<CharacterController>().enabled = true;
GameObject.Find("HEROI").GetComponent<FomeSede>().enabled = true;
if (ShowguiP == false && constructativado == false)
{
Cursor.lockState = CursorLockMode.Locked;
Cursor.visible = (false);
}
}
public void Opções()
{
}
public void Quit()
{
Application.Quit();
}
}
hellkiller- Mestre
- PONTOS : 4055
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Script de pausegame
Já vi este script antes... ele continua com vários erros de otimização, como utilizar o GameObject.Find no Update, falta de void's para comandos repetidos, etc...
Até seria interessante utilizar um enum para evitar confusão com essa troca de estados
Até seria interessante utilizar um enum para evitar confusão com essa troca de estados
Re: [Ajuda]Script de pausegame
Eu nunca utilizei o enum,poderia explicar?
arleydudu- Iniciante
- PONTOS : 3367
REPUTAÇÃO : 0
Respeito as regras :
Re: [Ajuda]Script de pausegame
Tente ver no que este código resulta...
Dei uma boa resumida no seu código... más não testei para ver como está.
Mesmo com esta resumida que eu fiz, ainda da para otimizar mais ainda, usando Tag em vez de Object.Find, entre outras coisas
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PauseGame : MonoBehaviour{
public GameObject PauseMenu, inventario, MenuConstruct;
public Transform FPSController, Inventario1;
private bool pauseativado = false, constructativado = false, craftativado = false;
private CharacterController controlador;
private FomeSede scriptFomeSede;
void Start(){
AjustarVariaveis (true);
controlador = GameObject.Find ("HEROI").GetComponent<CharacterController> ();
scriptFomeSede = GameObject.Find ("HEROI").GetComponent<FomeSede> ();
}
void Update(){
if (Input.GetKeyDown(KeyCode.Escape)){
if(!pauseativado){
pauseativado = true;
constructativado = false;
craftativado = false;
}else{
pauseativado = false;
}
ChecarEstados ();
}
if (Input.GetKeyDown(KeyCode.X) && !pauseativado && !craftativado){
constructativado = !constructativado;
ChecarEstados ();
}
if (Input.GetKeyDown(KeyCode.C) && !pauseativado && !constructativado){
craftativado = !craftativado;
ChecarEstados ();
}
}
void AjustarVariaveis (bool condicao){
FPSController.GetComponent<FirstPersonController>().enabled = condicao;
Inventario1.GetComponent<Inventario>().enabled = !condicao;
controlador.enabled = condicao;
scriptFomeSede.enabled = condicao;
Cursor.visible = (!condicao);
if (condicao) {
Time.timeScale = 0;
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
} else {
Time.timeScale = 1;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
}
void ChecarEstados (){
if (pauseativado) {
PauseMenu.SetActive (true);
} else {
PauseMenu.SetActive (false);
}
if (constructativado) {
MenuConstruct.SetActive (true);
} else {
MenuConstruct.SetActive (false);
}
if (craftativado) {
inventario.SetActive (true);
} else {
inventario.SetActive (false);
}
}
}
Dei uma boa resumida no seu código... más não testei para ver como está.
Mesmo com esta resumida que eu fiz, ainda da para otimizar mais ainda, usando Tag em vez de Object.Find, entre outras coisas
Re: [Ajuda]Script de pausegame
OK amigo, mais tarde testatei te falo o resultado! :D
arleydudu- Iniciante
- PONTOS : 3367
REPUTAÇÃO : 0
Respeito as regras :
Re: [Ajuda]Script de pausegame
Amigo n esta dando nenhum erro, mais n esta funcionando o mause sempre esta ativo e a travação ssempre estar desativada!
hellkiller- Mestre
- PONTOS : 4055
REPUTAÇÃO : 170
Áreas de atuação : Programação em C#,
Modelagem,
GameArt.
Respeito as regras :
Re: [Ajuda]Script de pausegame
Tentou ver qual era o problema? Não posso fazer os códigos para você...
Tente isto
Tente isto
- Código:
using UnityEngine;
using System.Collections;
using UnityStandardAssets.Characters.FirstPerson;
public class PauseGame : MonoBehaviour{
public GameObject PauseMenu, inventario, MenuConstruct;
public Transform FPSController, Inventario1;
private bool pauseativado = false, constructativado = false, craftativado = false;
private CharacterController controlador;
private FomeSede scriptFomeSede;
void Start(){
AjustarVariaveis (true);
controlador = GameObject.Find ("HEROI").GetComponent<CharacterController> ();
scriptFomeSede = GameObject.Find ("HEROI").GetComponent<FomeSede> ();
}
void Update(){
if (Input.GetKeyDown(KeyCode.Escape)){
if(!pauseativado){
pauseativado = true;
constructativado = false;
craftativado = false;
}else{
pauseativado = false;
}
ChecarEstados ();
}
if (Input.GetKeyDown(KeyCode.X) && !pauseativado && !craftativado){
constructativado = !constructativado;
ChecarEstados ();
}
if (Input.GetKeyDown(KeyCode.C) && !pauseativado && !constructativado){
craftativado = !craftativado;
ChecarEstados ();
}
if (pauseativado || constructativado || craftativado) {
AjustarVariaveis (false);
} else {
AjustarVariaveis(true);
}
}
void AjustarVariaveis (bool condicao){
FPSController.GetComponent<FirstPersonController>().enabled = condicao;
Inventario1.GetComponent<Inventario>().enabled = !condicao;
controlador.enabled = condicao;
scriptFomeSede.enabled = condicao;
if (condicao) {
Time.timeScale = 1;
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
} else {
Time.timeScale = 0;
Cursor.visible = true;
Cursor.lockState = CursorLockMode.None;
}
}
void ChecarEstados (){
if (pauseativado) {
PauseMenu.SetActive (true);
} else {
PauseMenu.SetActive (false);
}
if (constructativado) {
MenuConstruct.SetActive (true);
} else {
MenuConstruct.SetActive (false);
}
if (craftativado) {
inventario.SetActive (true);
} else {
inventario.SetActive (false);
}
}
}
Tópicos semelhantes
» [AJUDA]Preciso de ajuda em um script relacionado ao vídeo Sistema de escolha de personagen
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Quero Ajuda poque esse script so da erro!
» ajuda com script
» [Ajuda em script]
» Ajuda Urgente como chamo a animação no script alguém poderia dar uma ajuda???
» [AJUDA]Quero Ajuda poque esse script so da erro!
» ajuda com script
» [Ajuda em script]
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos