Skip to content

Repository files navigation

Como guardar partida en múltiples Slots en Unity3D

Este es un tutorial de como guardar partida en múltiples Slots (Espacios) en Unity3D, cuenta con un video publicado en Youtube.

Video de Youtube: https://youtu.be/FyOv3RvBegc

Paquete con el contenido del tutorial para Unity3D: MultiSave.unitypackage


Esta es la clase GameManager.cs del tutorial:

usingnet.TBMSP.Lib.File;usingnet.TBMSP.Lib.TBMPk.File;usingUnityEngine;namespacetutorial.MultiSave{publicclassGameManager:MonoBehaviour{publicTransformplayer,LoadMenu,SaveMenu;publicintHealth=100;privatestaticstring[]Slots=newstring[4];privatestaticTransformp;publicstaticGameManagerGetComponent(){returnp.GetComponent<GameManager>();}voidAwake(){p=this.transform;net.TBMSP.Lib.Program.Init(Application.persistentDataPath+"/",true);Debug.Log("En esta carpeta se guardan los archivos: \""+net.TBMSP.Lib.Program.RootDirectory+"\"");FileBase.CreateDirectory("Data/SaveData");for(inti=0;i<Slots.Length;i++){Slots[i]=TDF.CreateString();}}voidStart(){player.GetComponent<Player>().Move=false;SaveMenu.gameObject.SetActive(false);LoadMenu.gameObject.SetActive(true);}voidUpdate(){if(Input.GetKeyDown(KeyCode.Z)){player.GetComponent<Player>().Move=false;SaveMenu.gameObject.SetActive(false);LoadMenu.gameObject.SetActive(true);}if(Input.GetKeyDown(KeyCode.X)){OpenSaveMenu();}}publicvoidsaveGame(intSlotID){SaveGame(SlotID);SaveMenu.gameObject.SetActive(false);player.GetComponent<Player>().Move=true;}publicvoidloadGame(intSlotID){if(FileBase.FileExist("Data/SaveData/Slot_"+(SlotID+1)+".tdf")){Slots[SlotID]=TDF.Load("Data/SaveData/Slot_"+(SlotID+1)+".tdf");//TDF.LoadGZvarplayerComp=GetComponent().player.GetComponent<Player>();varpos=TDF.GetValueOfBlock(Slots[SlotID],"Game","PlayerPos").Split(","[0]);varposX=float.Parse(pos[0]);varposY=float.Parse(pos[1]);varposZ=float.Parse(pos[2]);player.position=newVector3(posX,posY,posZ);varrot=TDF.GetValueOfBlock(Slots[SlotID],"Game","PlayerRot").Split(","[0]);varrotX=float.Parse(rot[0]);varrotY=float.Parse(rot[1]);varrotZ=float.Parse(rot[2]);playerComp.rotation=newVector3(rotX,rotY,rotZ);player.rotation=Quaternion.Euler(newVector3(0,rotY,0));Health=int.Parse(TDF.GetValueOfBlock(Slots[SlotID],"Game","PlayerHealth"));}player.GetComponent<Player>().Move=true;SaveMenu.gameObject.SetActive(false);LoadMenu.gameObject.SetActive(false);}publicstaticvoidOpenSaveMenu(){GetComponent().SaveMenu.gameObject.SetActive(true);GetComponent().LoadMenu.gameObject.SetActive(false);GetComponent().player.GetComponent<Player>().Move=false;}publicstaticvoidSaveGame(intSlotID){varplayerComp=GetComponent().player.GetComponent<Player>();Slots[SlotID]=TDF.SaveValueInBlock(Slots[SlotID],"Game","PlayerPos",GetComponent().player.position.x+","+GetComponent().player.position.y+","+GetComponent().player.position.z);Slots[SlotID]=TDF.SaveValueInBlock(Slots[SlotID],"Game","PlayerRot",playerComp.rotation.x+","+playerComp.rotation.y+","+playerComp.rotation.z);Slots[SlotID]=TDF.SaveValueInBlock(Slots[SlotID],"Game","PlayerHealth",GetComponent().Health.ToString());TDF.Save("Data/SaveData/Slot_"+(SlotID+1)+".tdf",Slots[SlotID]);//TDF.SaveGZ}}}

Esta es la clase SaveTrigger.cs del tutorial:

usingUnityEngine;namespacetutorial.MultiSave{publicclassSaveTrigger:MonoBehaviour{publicboolInSave=false;voidOnTriggerEnter(Colliderc){if(c.tag=="SaveItem"&&!InSave){GameManager.OpenSaveMenu();InSave=true;}}voidOnTriggerExit(Colliderc){if(c.tag=="SaveItem"&&InSave){InSave=false;}}}}

About

Este es un tutorial de como guardar partida en múltiples Slots (Espacios) en Unity3D, cuenta con un video publicado en Youtube.

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages