iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0

我的文章系列快要變成每天30分鐘,學一點新的東西了。

一樣是繼續跟著教程走,Implement data persistence between scenes

Data Persistence的用途例子:

  • 遊戲中輸入的人物名字
  • 保存遊戲進度
  • 你選的是P1,還是P2
     
     

在Unity中,要在兩個地方保持Data Persistence:

  • 從場景A切換到場景B時,資料還是依舊保持正確。
  • 當把應用關掉再重開後,資料一樣保持一致。

筆記時間

public static MainManager Instance;

static的意思是,這裡存的數值,會與所有同類別的實例分享(像鳴人的影分身那樣?只是是即時的分享)

也有點像是Linux裡2個不同Process同時讀取同一份檔案,然後有一個Process修改檔案後,另外一個Process也會讀到新的檔案。

 
 

Awake()也是Unity中的特別Method,他下面的程式會在連接這個C#檔的物件建立時就執行~~ (有點Initializer的感覺?)~~ 還有再次切換到物件所在的場景時,他就也會再次被建立,Awake()也就再次被執行。
 
 
 

如何完成data persistence?

我現在有兩個場景,Menu跟Main,跟隨在不同場景下的物件只有在切換到該場景時才會再次被建立,例如我從Menu切到Main時,目前只會載入Main的物件,那這樣要如何保持資料呢?

會要用到DontDestroyOnLoad() (好直白)

用這個方法包住的物件,只要執行到這行,那個物件就會被丟到一個新的場景中保持著。

說來說去好拗口啊,怎麼說就是教程的意思,還是自己去看的好。

 
 
 

是說,如果不照教程說的

  1. 先在Scripts/資料夾中手動新增一個c#檔
  2. 然後在Menu場景中新增一個空物件,把c#檔Add上去

而是

  1. 先在Menu場景中新增一個空物件,把c#檔名打上去
  2. 沒找到,新建Script
  3. 則c#檔會直接默認建立在Assets/資料夾下方

所以如果要保持專案的整齊,最好還是新建一個Assets/Scripts/資料夾,然後把c#檔集中放那會比較好。

參考:
https://learn.unity.com/tutorial/implement-data-persistence-between-scenes?uv=2020.3&missionId=5f751af7edbc2a0022cdbbb6#60b7415aedbc2a5532d1331c


上一篇
Day 14. Tutorial: Create a scene flow - 10. Challenge Answer
下一篇
Day 16. Unity: 來學Implement data persistence between sessions
系列文
從零開始了解Unity或Unreal Engine應用於VR軟體開發31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
長風青雲
iT邦新手 4 級 ‧ 2021-10-01 08:40:05

C#?所以unity的語言到底是什麼啊@@還是都可

細枝 iT邦新手 4 級 ‧ 2021-10-01 22:30:49 檢舉

C#,他軟體內建立的程式都是.cs結尾的

OAO................................................
QAQ................我C#全還回去了

我要留言

立即登入留言