Skip to content
Home » 유니티 데이터 저장 | 유니티 Json 데이터 저장과 로드 (Jsonutillity) – (유니티 강좌) 모든 답변

유니티 데이터 저장 | 유니티 Json 데이터 저장과 로드 (Jsonutillity) – (유니티 강좌) 모든 답변

당신은 주제를 찾고 있습니까 “유니티 데이터 저장 – 유니티 JSON 데이터 저장과 로드 (JsonUtillity) – (유니티 강좌)“? 다음 카테고리의 웹사이트 https://kk.taphoamini.com 에서 귀하의 모든 질문에 답변해 드립니다: https://kk.taphoamini.com/wiki. 바로 아래에서 답을 찾을 수 있습니다. 작성자 레트로 retr0 이(가) 작성한 기사에는 조회수 21,613회 및 좋아요 366개 개의 좋아요가 있습니다.

Table of Contents

유니티 데이터 저장 주제에 대한 동영상 보기

여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!

d여기에서 유니티 JSON 데이터 저장과 로드 (JsonUtillity) – (유니티 강좌) – 유니티 데이터 저장 주제에 대한 세부정보를 참조하세요

유니티에서 json을 통해 오브젝트 정보를 저장하고 로드하는 방법을 살펴봅니다.
직렬화 \u0026 역직렬화 비디오 링크 : https://youtu.be/qrQZOPZmt0w

동영상을 봐주셔서 고맙습니다!
마음에 들었다면, 유튜브에서 가장 간결한 개발 강좌를 계속 만들 수 있도록 구독해주세요! 🔥

즉시 시작할 수 있는 유니티 게임 프로그래밍 강좌를 만나보세요 :
► https://www.boxcollider.io/p/unity-programming

책을 선호하나요? 가장 쉽고 완벽한 유니티 C# 책을 만나보세요.
► http://yes24.com/Product/Goods/69320872

유니티 데이터 저장 주제에 대한 자세한 내용은 여기를 참조하세요.

[Unity] 유니티의 데이터 저장 방법들과 그 경로 – DevRuby archive

이런 데이터를 저장하는 기초적인 방법은 다음과 같다. 데이터베이스에 연결해 저장; 유니티에서 제공하는 PlayerPrefs 이용; Json, Xml과 같은 파일에 …

+ 여기에 보기

Source: devruby7777.tistory.com

Date Published: 10/1/2021

View: 8877

Unity 인디게임 데이터 저장 방법 – 만사오케이 프로그래밍 프로

1.유니티 기본저장방법 PlayerPrefs 사용합니다. · 1)유니티에서 제공하기에 호환성이 좋습니다. · 2)디바이스 기기에 상관없이 같은코드로 저장할수 있어 …

+ 자세한 내용은 여기를 클릭하십시오

Source: psh10004okpro.com

Date Published: 6/29/2021

View: 5643

유니티 데이터 저장 및 불러오기 (PlayerPrefs) – Notyu

유니티는 데이터를 저장하기 위한 ScriptableObject, PlayerPrefs, Json과 같은 다양한 방법들을 제공한다. ScriptableObject 및 Json은 카테고리 …

+ 더 읽기

Source: notyu.tistory.com

Date Published: 5/20/2021

View: 3510

[Unity/C#] 데이터 저장/불러오기 가장 쉬운 방법 (Json)

유니티에서 데이터를 저장하는 방법에 대해 알아보도록 하겠습니다! 이 방법을 통해 게임을 껐다가 켜도 데이터가 유지되도록 할 수 있습니다.

+ 자세한 내용은 여기를 클릭하십시오

Source: yoonstone-games.tistory.com

Date Published: 9/9/2022

View: 7955

[Unity] 유니티 내부에 데이터 저장 / 로컬 저장 – IT 메모장

[Unity] 유니티 내부에 데이터 저장 / 로컬 저장. rinix_x 2022. 4. 13. 05:13. 계속 DataBase에 접근하기엔 데이터 양이 많아질수록 딜레이가 생기거나 로드되는 것이 …

+ 여기를 클릭

Source: pleasefixthebug.tistory.com

Date Published: 8/24/2021

View: 2598

[유니티] 데이터 저장&불러오기(Save&Load) – PlayerPrefs

로컬에 데이터를 저장하는 방법은 여러 가지가 있습니다. 저는 저장될 내용에 따라 JSON, 바이너리, PlayerPrefs 등 혼용해서 많이 쓰는데요.

+ 여기에 보기

Source: art-life.tistory.com

Date Published: 5/16/2021

View: 6044

[절대강좌! 유니티] – 데이터 저장 및 불러오기 – 네이버 블로그

게임을 처음 실행할 때는 초기 데이터를 불러오며, 게임 실행 중 생성된 각종 데이터는 저장하여 게임을 종료해도 남아 있어야 한다. ​. [유니티 …

+ 여기에 표시

Source: m.blog.naver.com

Date Published: 3/18/2022

View: 2434

유니티 데이터 저장하는 방법 – Scriptable Object로 리소스 생성 …

유니티 데이터 저장 방법 그중에서도 Scriptable Object를 이용해 데이터를 저장하는 방법에 대해 배워보도록 합시다. 게임을 제작할 때 데이터를 …

+ 여기를 클릭

Source: postiveground.com

Date Published: 4/5/2021

View: 1297

주제와 관련된 이미지 유니티 데이터 저장

주제와 관련된 더 많은 사진을 참조하십시오 유니티 JSON 데이터 저장과 로드 (JsonUtillity) – (유니티 강좌). 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.

유니티 JSON 데이터 저장과 로드 (JsonUtillity) - (유니티 강좌)
유니티 JSON 데이터 저장과 로드 (JsonUtillity) – (유니티 강좌)

주제에 대한 기사 평가 유니티 데이터 저장

  • Author: 레트로 retr0
  • Views: 조회수 21,613회
  • Likes: 좋아요 366개
  • Date Published: 2019. 2. 25.
  • Video Url link: https://www.youtube.com/watch?v=abwOVy5qTO4

[Unity] 유니티의 데이터 저장 방법들과 그 경로

유니티의 데이터 저장

유니티로 게임을 만들다 보면 유저의 데이터를 저장해야 하는 일이 생긴다. 닉네임이라던지, 레벨이라던지..

이런 데이터를 저장하는 기초적인 방법은 다음과 같다.

데이터베이스에 연결해 저장 유니티에서 제공하는 PlayerPrefs 이용 Json, Xml과 같은 파일에 저장

(물론 이 외에도 여러 가지 방법들이 존재한다)

1번 방법은 별도로 필요한 게 많고 복잡하지만 유저가 데이터를 조작하는 걸 막을 수 있다.

2, 3번 방법은 간단하지만, 컴퓨터에 파일로 데이터를 저장하므로 유저가 데이터를 조작할 수 있다.

이번 강좌에서는 2, 3번 방법을 설명할 예정이다. 1번 방법은 https://yourpresence.tistory.com/87 이 글에 자세히 나와있다.

PlayerPrefs를 이용한 데이터 저장

유니티에서 자체적으로 제공하는 기능인 PlayerPrefs를 이용해 데이터를 간단히 저장하고 불러올 수 있다.

PlayerPrefs에는 다음과 같은 메서드들이 존재한다.

void DeleteAll()

void DeleteKey(string name)

bool HasKey(string name)

float GetFloat(string name)

int GetInt(string name)

string GetString(string name)

void SetFloat(string name, float value)

void SetInt(string name, int value)

void SetString(string name)

DeleteAll은 이름대로 모든 키를 지우고, DeleteKey 함수는 인자로 넘겨준 키 값의 데이터를 삭제한다.

HasKey는 해당 이름으로 저장된 키가 있는지 확인하고, 그 결과를 bool값으로 넘겨준다.

여기서 핵심은 Set~과 Get~ 함수다.

SetFloat는 Float형 자료형의 데이터를 저장하고, SetInt는 Int형, SetString은 String형의 데이터를 저장한다.

GetFloat는 Float형 자료형의 데이터를 불러오고, GetInt는 Int, GetString은 String형의 데이터를 불러온다.

간단한 예제를 살펴보자.

public class Example : MonoBehaviour{ void Start() { if(!PlayerPrefs.HasKey(“level”)) PlayerPrefs.SetInt(“level”, 0) Debug.Log(String.Format(“Level : {0}”, PlayerPrefs.GetInt(“level”))); } }

다음 코드는 HasKey 메서드로 level이라는 키값이 있는지 확인하고, 없다면 값을 0으로 해 새로 생성한다.

그리고, GetInt 메서드로 level값을 가져와 콘솔에 출력한다.

Int, String, Float 모두 비슷한 방법으로 처리하면 된다.

Get~ 메서드로 값을 가져올 때, 해당되는 키가 없다면 에러가 날 수 있으므로 항상 HasKey 메서드를 이용해 먼저 체크하는 것이 좋다.

PlayerPrefs의 저장 경로

PlayerPrefs의 데이터는 다음 경로에 저장된다. http://ancardwineugene.blogspot.com/2015/07/unity3d-playerprefs.html 글을 참고하였다.

Windows OS

애플리케이션 – (레지스트리) 레지스트리 HKCU/Software/[company name]/[product name]

웹플레이어 – %APPDATA%/Unity/WebPlayerPrefs/[company name]/[product name]/

Mac OS

어플리케이션 – ./Library/Preferences/

웹 플레이어 – ./Library/Preferences/Unity/WebPlayerPrefs/

[company name]과 [product name]은 유니티 에디터의 Player Setting에서 설정 가능한 값들이다.

Json을 이용한 데이터 저장

Json 말고도 Xml, Yaml 등등 많은 데이터 직렬화 양식이 있지만, Json은 여러 모듈도 있고, 더 간단하다.

Unity에서 자체 제공하는 JsonUtility가 있긴 하지만, 필자는 LitJson 모듈이 더 익숙하고, 편하다고 생각해 이 강좌에서는 LitJson 모듈을 활용한 데이터 저장을 살펴보겠다.

litjson.net 에서 다운로드할 수 있다. / 0.9 버전 다운로드 링크 – github.com/LitJSON/litjson/releases/download/v0.9.0/LitJson.dll

*모든 코드는

using LitJson;

을 붙여야 작동한다.

경로

유니티에서 파일을 저장할 때는, PlayerPrefs와 다르게 직접 그 경로를 설정해주어야 한다.

chameleonstudio.tistory.com/62 글을 참고했다.

Windows OS

Application.dataPath – 프로젝트 폴더 내부

Application.streamingAssetsPath 프로젝트 폴더 -> 에셋 폴더

Application.persistentDataPath – C:\Users\[user name]\AppData\LocalLow\[company name]

Mac OS

Application.dataPath – 프로젝트 폴더 -> 에셋 폴더

Application.streamingAssetsPath – 프로젝트 폴더 -> 에셋 폴더 -> StreamingAssets 폴더

Application.persistentDataPath – 라이브러리 > Application Support > [company name] > [product name]

저장 기능

LitJson 모듈은 JsonMapper.ToJson 메서드로 Object를 Json 데이터로 변환할 수 있다.

다음 예제 코드를 봐보자.

public class Data { public int level; public string name; public Data(int level, string name){ this.level = level; this.name = name; } } public class Example : MonoBehaviour { void Start() { Data data = new Data(10, “DevRuby”); save(data); } void Save(Data data) { JsonData jsondata = JsonMapper.ToJson(data); System.IO.File.WriteAllText(Application.persistentDataPath + @”\data.json”, jsondata.ToString()); } }

데이터 클래스를 새로 생성하고, ToJson 메서드를 이용해 JsonData 타입의 jsondata를 생성하고,

Application.persistentDataPath\data.json 경로에 jsondata를 저장한다.

data.json의 내용은 다음과 같을 것이다.

{ “level” : 10, “name” : “DevRuby” }

불러오기 기능

저장 기능의 구현을 끝냈으니, 이제 저장한 Json 파일을 불러오는 기능을 구현해보자.

JsonMapper.ToObject 메서드로 Json(string)을 Object로 변환할 수 있다.

저장 기능의 코드에 맞춰 코드를 짜 보겠다.

public class Data { //생략 } public class Example : MonoBehaviour { void Start() { Data data = new Data(10, “DevRuby”); save(data); JsonData json = Load(); Debug.Log(json[“level”].ToString()); Debug.Log(json[“name”].ToString()); } void Save(Data data) { //생략 } JsonData Load() { string jsonString = System.IO.File.ReadAllText(Application.persistentDataPath + @”\data.json”); JsonData jsondata = JsonMapper.ToObject(jsonstring); return jsondata; } }

json 파일의 텍스트를 읽어오고, 텍스트를 JsonData 타입으로 변환한다.

JsonData는 딕셔너리처럼 키값을 넣어 사용이 가능하다.

또한, JsonData[key] 로 불러온 값은 여전히 JsonData 형식이기 때문에, ToString 함수를 이용해 문자열로 만들어줘야 한다.

ex) data[“money”] / json[“data1”][“data2”]

마무리

지금 살펴본 것들 외에도 수많은 저장 방법이 있다. 오늘은 그중 딱 2가지의 방법만 알아보았다.

각각의 저장방법들은 개성이 뚜렷하고, 장/단점들이 있다. 따라서 어떤 한 가지의 방법이 좋은 게 아니고 경우에 따라 다양하게 사용하면 된다.

Unity 인디게임 데이터 저장 방법

반응형

1.유니티 기본저장방법 PlayerPrefs 사용합니다.

장점)

1)유니티에서 제공하기에 호환성이 좋습니다.

2)디바이스 기기에 상관없이 같은코드로 저장할수 있어 관리가 쉽습니다.

3)직관적이어서 사용하기 쉽습니다.

단점)

1)보안에 약하여 해킹위험에 있다.

2)int, float, string으로만 저장할수 있다.

인디게임 및 보안을 신경안써도 값들에 유용합니다.

사용방법

예)

저장방법입니다. 첫번째 인자에 키값, 두번째 인자에 저장할 값을 넣습니다.

int형 저장방법입니다.

PlayerPrefs.SetInt(“Lv”, 1000);

string형 저장방법입니다.

PlayerPrefs.SetString(“JewelValue”, 10000.ToString());

주의사항

값자기 오류로 저장이 안될경우가 있기에 직접 세이브 코드를 넣어주는게 좋습니다.

PlayerPrefs.Save();

데이터 불러오는 방법입니다. 저장한 값으로 데이터를 가저옵니다.

int형 불러오는 방법입니다. 주의사항으로 저장한 값이 있는지 HasKey로 체크후 데이터를 가져옵니다.

if (PlayerPrefs.HasKey(“Lv”)) { int Lv = PlayerPrefs.GetInt(“Lv”); }

데이터 삭제하기

특정 데이터를 삭제할수 있습니다.

PlayerPrefs.DeleteKey(“Lv”);

모든 데이터를 삭제할수 있습니다.

PlayerPrefs.DeleteAll();

고급 팁 !!!

PlayerPrefs로 Class 저장하기

Json 라이브러리를 사용하여 Class를 String으로 만들어서 저장하면 된다.

무료 Json라이브러리

https://assetstore.unity.com/packages/tools/input-management/json-net-for-unity-11347

예시

스테이지정보 Class 저장하기

[Serializable] public class UserData { public int chapter = 1; public int stage; public int wave; }

Class 저장방법입니다.

string data = JsonConvert.SerializeObject(UserinfoManager.instance.userData); PlayerPrefs.SetString(“UserInfo”, data);

Class 로드방법입니다.

if (PlayerPrefs.HasKey(“UserInfo”)) { string userinfo = PlayerPrefs.GetString(“UserInfo”); UserData theObject = JsonConvert.DeserializeObject(userinfo); }

2.에셋을 사용하여 저장하기 입니다.

Easy Save 등 다양한 에셋을 이용하여 쉽게 저장할수 있습니다.

데이터를 빠르고 쉽게 저장하고 불러올수 있어 시간, 비용 및 노력을 절약할수 있습니다.

모바일 기기에서도 빠른 속도로 작동합니다.

JSON 및 XML과 비교하여 훨씬 빠르고 훨씬 적은 메모리 사용합니다.

Playmaker 완벽 지원하여 코드없이 저장할수 있습니다.

효율적이고 안전한 데이터 암호화를 쉽게 할수 있습니다.

3.서버를 통해 저장입니다.

백엔드 구현이 가능하시면 서버를 만들어 저장하는 방법이 가장 안전합니다.

그리고 인디게임 쪽에서는 뒤끝서버를 사용하여 서버를 쉽게 사용하여 게임을 관리하는 경우가 많습니다.

반응형

유니티 데이터 저장 및 불러오기 (PlayerPrefs)

728×90

1. PlayerPrefs

프로그램의 개발에 있어서, 데이터는 가장 중요한 요소이다. 데이터는 지속적으로 저장되어, 캐릭터의 레벨과 같은 상태, 획득한 아이템 등은 영구적인 보관이 요구된다.

온라인 게임의 경우 대부분의 데이터는 서버에 저장된다. 이는 위조, 변조를 방지하는데 유리하며, 관리하기에 용이하다. 하지만 모든 데이터를 서버에 저장하는 것은, 지속적으로 클라이언트와 서버 간의 통신이 발생한다는 것을 의미하며, 이는 서버의 부담을 가중시킨다.

따라서, 중요하지 않은 데이터는 직접 클라이언트에 저장하고 관리한다. 중요하지 않은 데이터로는 음량 조절 값 같은 옵션 설정에 사용되는 데이터들을 예로 들 수 있다.

유니티는 데이터를 저장하기 위한 ScriptableObject, PlayerPrefs, Json과 같은 다양한 방법들을 제공한다.

ScriptableObject 및 Json은 카테고리 중급에서 다룬다.

본 글에서는 PlayerPrefs에 대하여 설명한다.

PlayerPrefs은 로 데이터를 저장하는 클래스이다.

PlayerPrefs은 int, float, string 타입의 데이터를 저장한다.

Key값은 string이며, Key는 Value를 찾기 위한 식별자를 의미한다.

2. PlayerPrefs 제공 함수

PlayerPrefs은 데이터를 메모리 상에 저장하고, 이를 하드 드라이브에 저장한다. 메모리 상의 저장은 임시적인 저장으로, 갑작스러운 프로그램의 정지와 같은 문제가 발생하였을 때, 저장이 이루어지지 않는 경우가 생길 수 있다. PlayerPrefs의 Save() 함수는 메모리 상에 저장된 데이터를 하드 드라이브에 저장한다.

DeleteAll() : 모든 데이터를 삭제한다. 이 함수를 사용할 경우 경고 메시지가 출력된다.

DeleteKey(String Key) : Key와 대응하는 값을 삭제한다.

HasKey(String Key) : Key가 존재하는지 확인한다.

Save() : 수정된 모든 preferences를 파일에 저장한다.

PlayerPrefs은 int, float, string 타입의 데이터를 저장하도록 Set 함수를 제공한다.

SetInt(string Key, int value) : Key 값으로 int 형 데이터를 저장한다.

SetFloat(string Key, float value) : Key 값으로 float 형 데이터를 저장한다.

SetString(string Key, string value) : Key 값으로 string 형 데이터를 저장한다.

PlayerPrefs은 int, float, string 타입의 저장된 데이터를 불러오도록 Get 함수를 제공한다.

GetInt(string Key) : Key 값으로 저장된 int 형 데이터를 불러온다.

GetFloat(string Key) : Key 값으로 저장된 float 형 데이터를 불러온다.

GetString(string Key) : Key 값으로 저장된 string 형 데이터를 불러온다.

728×90

3. PlayerPrefs 저장 위치

Playerprefs은 데이터를 Window에서는 Registery에 저장한다.

Window -> 실행 -> regedit

HKEY_CURRENT_USER/Software/Unity/UnityEditor/CompanyName/projectName

안드로이드는 안드로이드 api에서 제공하는 SharerPreferences에 저장한다.

※추가적인 사항은 유니티 문서 PlayerPrefs를 참조.

4. PlayerPrefs 예제

간단한 UI를 구성한다.

Slider와 Text로 이루어진 옵션 UI 예제이다.

Example Option UI

슬라이더에 리스너를 등록하고, 슬라이더의 값이 변경되면, 값을 PlayerPrefs을 사용해 저장한다.

Awake() 함수에서는 해당 키 값으로 저장된 데이터가 있는지 확인하기 위해 HasKey() 함수를 사용한다. 처음 실행 시에는 키 값이 없기 때문에 이에 대한 처리를 한다.

슬라이더의 값은 float을 사용하였기 때문에, SetFloat() 함수를 사용하여 데이터를 저장한다.

ToString(“F”)는 “F” 형식 지정자로, 소수점 2자리까지 Text에 출력한다.

using UnityEngine; using UnityEngine.UI; public class PlayerPrefsExample : MonoBehaviour { public Slider slider; public Text textValue; private void Awake() { if (PlayerPrefs.HasKey(“Volume”)) { slider.value = PlayerPrefs.GetFloat(“Volume”); } else { slider.value = 0.5f; } textValue.text = slider.value.ToString(“F”); } // Start is called before the first frame update void Start() { slider.onValueChanged.AddListener(OnValueChanged); } // Update is called once per frame void Update() { } public void OnValueChanged(float _value) { textValue.text = _value.ToString(“F”); // Save PlayerPrefs.SetFloat(“Volume”, _value); } }

참조

Unity dacuments

docs.unity3d.com/kr/530/ScriptReference/PlayerPrefs.html

PlayerPrefs.Save()

answers.unity.com/questions/753649/is-playerprefssave-necessary-my-game-saves-without.html

728×90

불러오기 가장 쉬운 방법 (Json)

유니티에서 데이터를 저장하는 방법에 대해 알아보도록 하겠습니다!

이 방법을 통해 게임을 껐다가 켜도 데이터가 유지되도록 할 수 있습니다.

(저는 챕터의 잠금여부를 저장했습니다 : Bool값)

1. 데이터 관리 / 저장 할 데이터 스크립트 생성하기

먼저 데이터 저장을 사용할 유니티프로젝트를 열어

Asset 파일 속 원하는 위치에 C#스크립트를 새로 작성해야 합니다.

저는 데이터의 저장과 불러오기를 관리할 스크립트는 DataManager,

저장해야 할 데이터들을 관리할 스크립트는 GameData라는 이름으로 만들었습니다.

2. 데이터 관리 스크립트 작성하기

DataController 스크립트를 열어 코드를 적어봅시다.

(pirnt 부분은 선택사항입니다)

using System.IO; using UnityEngine; public class DataManager : MonoBehaviour { static GameObject container; // —싱글톤으로 선언— // static DataManager instance; public static DataManager Instance { get { if (!instance) { container = new GameObject(); container.name = “DataManager”; instance = container.AddComponent(typeof(DataManager)) as DataManager; DontDestroyOnLoad(container); } return instance; } } // — 게임 데이터 파일이름 설정 (“원하는 이름(영문).json”) — // string GameDataFileName = “GameData.json”; // — 저장용 클래스 변수 — // public Data data = new Data(); // 불러오기 public void LoadGameData() { string filePath = Application.persistentDataPath + “/” + GameDataFileName; // 저장된 게임이 있다면 if (File.Exists(filePath)) { // 저장된 파일 읽어오고 Json을 클래스 형식으로 전환해서 할당 string FromJsonData = File.ReadAllText(filePath); data = JsonUtility.FromJson(FromJsonData); print(“불러오기 완료”); } } // 저장하기 public void SaveGameData() { // 클래스를 Json 형식으로 전환 (true : 가독성 좋게 작성) string ToJsonData = JsonUtility.ToJson(data, true); string filePath = Application.persistentDataPath + “/” + GameDataFileName; // 이미 저장된 파일이 있다면 덮어쓰고, 없다면 새로 만들어서 저장 File.WriteAllText(filePath, ToJsonData); // 올바르게 저장됐는지 확인 (자유롭게 변형) print(“저장 완료”); for (int i = 0; i < data.isUnlock.Length; i++) { print($"{i}번 챕터 잠금 해제 여부 : " + data.isUnlock[i]); } } } DataManager.cs 0.00MB (위 코드를 복사하시려면 이 스크립트를 다운받아주세요 - 우클릭 방지) 더보기 [ 코드 설명 💬 ] 유니티에서 지원해주는 System.IO는 폴더 안에 저장 된 게임 파일을 확인하고, 존재유무를 판단하여 불러올 수 있게 해줍니다. 데이터 매니저 클래스를 싱글톤으로 관리하기 위해 클래스 안에서 직접 오브젝트 생성, 이름 설정, 클래스 컴포넌트 추가를 한 뒤에 씬이 전환되어도 삭제되지 않도록 DontDestroyOnLoad() 함수를 사용합니다. FileWriteAllText() 매서드는 이미 저장된 파일이 있을 경우 덮어쓰도록 해줍니다. 3. 저장 할 데이터 스크립트 작성하기 데이터를 저장하고 불러오기를 해줄 스크립트를 모두 작성했다면 원하는 데이터를 적어둘 스크립트를 작성해야 합니다. using System; [Serializable] // 직렬화 public class Data { // 각 챕터의 잠금여부를 저장할 배열 public bool[] isUnlock = new bool[5]; } GameData.cs 0.00MB (위 코드를 복사하시려면 이 스크립트를 다운받아주세요 - 우클릭 방지) 제가 만든 게임은 챕터가 잠겨있고, 이전 챕터를 클리어하면 다음 챕터가 잠금해제 되는 방식의 게임이므로 챕터의 잠금여부를 bool 자료형의 배열로 저장해두었습니다. 더보기 [ 코드 설명 💬 ] Json으로 전환하여 저장할 수 있도록 [Serializable]과 public을 통해 직렬화해 줍니다. (참조 : https://docs.unity3d.com/kr/530/Manual/script-Serialization.html) 4. 원하는 부분에서 저장하기 / 불러오기 어떤 스크립트에서든 이 코드만 적어주면 원하는 상황에서 저장할 수 있습니다. // 원하는 순간에 함수 호출 DataManager.Instance.SaveGameData(); // 저장 DataManager.Instance.LoadGameData(); // 불러오기 예를 들어 세이브 버튼을 누르거나 게임이 종료되는 등 저장이 필요한 상황이나 게임 시작되는 순간과 같이 불러오기가 필요한 상황에서 호출하시면 됩니다. 데이터 매니저가 싱글톤이기 때문에 언제 어디서든 편하게 접근하여 호출이 가능합니다. 5. 다시 실행했을 때 저장되어 있는 데이터 확인하기 데이터를 만들고 저장했다면 제대로 저장되어 있는지 불러오기를 해봐야겠죠? 불러오기 코드는 이미 위에서 작성을 했으니 확인을 해봅시다 샘플용 오브젝트와 스크립트를 만들어두고, 그 안에 위에서 작성한 저장/불러오기 함수를 호출하는 코드를 작성합니다. DataManager 클래스는 사용될 때 자동으로 오브젝트를 생성하도록 했기 때문에 따로 오브젝트를 만들어서 컴포넌트를 넣어둘 필요가 없습니다. 게임을 플레이하면 스타트 함수에 있던 함수 호출에 의해 자동으로 데이터 매니터 오브젝트가 생성되고, 데이터 매니저 스크립트를 컴포넌트로 갖게 됩니다. 변경사항을 만들어 준 후, 게임을 종료하면 자동으로 저장이 되고, 다시 게임을 시작하면 저장되어있던 값을 불러오는 것을 확인할 수 있습니다. 사용한 경로에서 저장된 파일을 열어서 확인할 수도 있습니다. 데이터 저장/불러오기 가장 쉽게 하는 방법이었습니다 🙂 끝까지 읽어주셔서 감사합니다! 도움이 되셨다면 댓글+하트 해주세요 🥰 반응형

[Unity] 유니티 내부에 데이터 저장

계속 DataBase에 접근하기엔 데이터 양이 많아질수록 딜레이가 생기거나 로드되는 것이 늦어지는 현상이 발생하여

이를 방지하기 위해 일부만 내부 데이터에 저장하기로 했습니다.

반응형

여러 가지가 있는데 그중 JSON을 이용한 방식을 하려고 합니다.

우선.

System.IO는 폴더 안에 저장된 파일을 확인하고, 불러올 때 필요한 시스템입니다.

저희는 게임 파일을 로컬 내 폴더에 저장하고, 불러올 것이라 System.IO를 선언해줍니다.

다음은 해당 CS를 인스턴스화 해서 바로 접근할 수 있도록 도와줄 겁니다.

저는 CS이름이 saveData라 saveData스크립트를 인스턴스화 시켜줬습니다.

이제는 저장할 게임 데이터의 파일 이름을 설정해줍니다.

이때. json안에 파일 이름을 설정해주시면 됩니다.

data.json 이런 식으로 앞에 적으시면 됩니다.

이때 당연한 거지만, 영어로 적으셔야 합니다 🙂

그러고 나서 public GameData를 선언했습니다.

GameData는 저장할 게임 데이터 정보의 구조화된 CS로,

각자 자신의 데이터 정보가 담긴 cs를 선언하시면 됩니다.

GameData부분은 밑에 다룰 것이니 마저 작성해봅시다!

계속하면, 게임 데이터를 기록한 파일 내용들을 불러오는 것입니다.

저장된 파일이 있으면, 저장된 파일을 불러올 것이고, 없으면 새로 생성해 줍니다.

오른쪽은 데이터를 저장해주는 것입니다.

해당되는 파일 위치에 gameData를 덮어 씌운 기로 저장하는 방식입니다.

자동 저장을 위해 아래 OnApplicationQuit() 메서드를 사용했습니다.

그다음은 GameData.cs를 다뤄보겠습니다.

직렬화를 해주기 위해 Serializable을 해주어야 합니다.

그러고 나서 저장할 원하시는 게임 데이터를 넣어주시면 됩니다.

저 같은 경우는 좌표 정보를 저장하고 싶어서 저렇게 해보았습니다.

이거 보고 하시는 분은 각자 원하는 정보..

골드나 점수, 최고 점수, 캐릭터 위치 정보, 몇 번째 저장 등등 필요한 정보를 적어주시면 됩니다.

해서 실행을 해보면!!

잘 저장되는 것을 볼 수 있었습니다

반응형

[유니티] 데이터 저장&불러오기(Save&Load) – PlayerPrefs

로컬에 데이터를 저장하는 방법은 여러 가지가 있습니다.

저는 저장될 내용에 따라 JSON, 바이너리, PlayerPrefs 등 혼용해서 많이 쓰는데요.

그중 이번에는

아마도 유니티 내에서 가장 간단한 PlayerPrefs를 활용해볼까 합니다.

PlayerPrefs

일단 알아 두셔야 할 점은,

-간편하게 관리할 수 있다는 점.

-간편하고 쉬운만큼 보안성은 개나 줘 버려서 없음. (저장 위치의 파일을 열어보면 날 것 그대로의 값이..)

위 같은 이유로 중요한 데이터는 웬만해서는 이 방법을 추천하지 않습니다.

보통, 게임 옵션의 세팅 정보 (BGM, Sound의 볼륨 크기, 진동 유무) 정도로 사용하시는 게 적당하지 않을까 싶네요.

(만약 정말 만약 PlayerPrefs를 활용해서 중요한 게임 데이터를 저장코자 한다면,

꼭 저장 전에 암호화한 값을 저장해주세요. 암호화는 나중에 한 번 다뤄 보도록 하겠습니다.)

PlayerPrefs은 기본적으로 Int / Float / String의 변수 타입을 지원합니다.

(Bool 변수형의 경우는 지원을 하지 않는 것으로 보이는데, 저의 경우 삼항 연산을 이용 Int로 변환해서 사용합니다.)

(배열을 간혹 저장해야 할 때가 있는데 배열을 String으로 변환 후 Spilt을 이용해 사용합니다.)

저장하기(Save)

정말 간단히 저장된다.

//기본적으로 PlayerPrefs는 (“키”, 값) 형태로 사용 //Int – 정수형 변수의 저장 PlayerPrefs.SetInt(“키”, int); //String – 문자열 형태의 변수 저장 PlayerPrefs.SetString(“키”, string); //Float – 실수형의 변수 저장 PlayerPrefs.SetFloat(“키”, float);

예를 들어

//유저 데이터 세이브 //캐릭터 이름 PlayerPrefs.SetString(“CharName”, “무예꼬마”); //캐릭터 레벨 PlayerPrefs.SetInt(“Level”, 10); //치명타 확률 PlayerPrefs.SetFloat(“Critical”, 0.5f);

불러오기(Load)

로드 역시 간단하다.

//기본적으로 PlayerPrefs는 (“키”, 값) 형태로 사용 //Int – 정수형 변수의 저장 PlayerPrefs.GetInt(“키”); //String – 문자열 형태의 변수 저장 PlayerPrefs.GetString(“키”); //Float – 실수형의 변수 저장 PlayerPrefs.GetFloat(“키”);

//유저 데이터 로드 //캐릭터 이름 string charName = PlayerPrefs.SetString(“CharName”); //”무예꼬마” //캐릭터 레벨 int level = PlayerPrefs.SetInt(“Level”); //10 //치명타 확률 float criticalPoint =PlayerPrefs.SetFloat(“Critical”); //0.5f

끝이다.

다만 만약에 로드를 했는데 해당 키가 없을 경우 기본 초기값을 설정해주는 방법이 있는데

//불러올때 초기값을 설정해주면, 혹시나 값이 없을때 초기값으로 값을 돌려준다. PlayerPrefs.GetInt(“키”, 초기값); //예를들어 //레벨 데이터를 가져오고, 만약 레벨 데이터가 없다면 1을 불러온다. PlayerPrefs.GetInt(“level”, 1); //String Float 모두 동일하게 사용가능하다.

아래는 추가적으로 필요한 기능들!

삭제(Delete)

더 이상 필요가 없는 저장된 키값을 지우고 싶을 때가 있다.

//지우고싶은 데이터 삭제 PlayerPrefs.DeleteKey(“키”); //저장되어있는 모든 데이터 삭제 PlayerPrefs.DeleteAll();

해당 데이터가 있는지 확인

//해당 이름을 가진 데이터가 있다면 true if(PlayerPrefs.HasKey(“키”)) Debug.Log(“해당 키가 존재합니다.”);

반응형

[절대강좌! 유니티] – 데이터 저장 및 불러오기

게임을 처음 실행할 때는 초기 데이터를 불러오며, 게임 실행 중 생성된 각종 데이터는 저장하여 게임을 종료해도 남아 있어야 한다

[유니티 데이터 저장 방식]

1. PlayerPrefs 활용

– 유니티에서 가장 간편하게 사용 가능한 데이터 관리 클래스

– int, float, string, bool 타입의 변수를 저장하고 로드하는 기능

– 누구나 저장 경로의 *.plist 파일만 열면 바로 조회 및 수정 가능하기에 보안성은 제로다

– 따라서, 중요한 게임 데이터는 절대로 PlayerPrefs 로 관리하면 안 되며 혹여나 사용 시 암호화해서 저장해야 한다

키워드에 대한 정보 유니티 데이터 저장

다음은 Bing에서 유니티 데이터 저장 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.

이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!

사람들이 주제에 대해 자주 검색하는 키워드 유니티 JSON 데이터 저장과 로드 (JsonUtillity) – (유니티 강좌)

  • 유니티
  • 유니티 3D
  • 유니티 2D
  • 유니티 강좌
  • 유니티 튜토리얼
  • 유니티 3D 강좌
  • 유니티 C#
  • Unity 3D
  • Unity
  • C#
  • 게임 개발
  • 프로그래밍
  • 게임 프로그래밍
  • 튜토리얼
  • Unity3D
  • Tutorial
  • 개발 강좌
  • 개발
  • C# 강좌
  • Unity C#
  • C# 튜토리얼
  • Json
  • JSON
  • JsonUtillity

유니티 #JSON #데이터 #저장과 #로드 #(JsonUtillity) #- #(유니티 #강좌)


YouTube에서 유니티 데이터 저장 주제의 다른 동영상 보기

주제에 대한 기사를 시청해 주셔서 감사합니다 유니티 JSON 데이터 저장과 로드 (JsonUtillity) – (유니티 강좌) | 유니티 데이터 저장, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.

See also  가리비 치즈 구이 | 리얼먹방:) 치즈가리비구이 \U0026 가리비찜 ★ Ft.가리비라면, 소주ㅣScallops (Ft.Soju, Ramyun)ㅣReal SoundㅣAsmr MukbangㅣEating Showㅣ 모든 답변

Leave a Reply

Your email address will not be published. Required fields are marked *