Day 15. 来了解Data Persistence in Unity

我的文章系列快要变成每天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


<<:  软件开发 五层次的用户体验

>>:  这位秘书,懂喝喔

D15 - 用 Swift 和公开资讯,打造投资理财的 Apps { 加权指数K线图实作.3 - 使用 Charts 实作 K 线图 }

如果你真的对画图很有兴趣,而且很想自己做图表的类别,那你可以使用程序在拿到资料後,用 UIView,...

图的走访 - DFS 篇

5 图的走访 - DFS 篇 今天要跟大家分享另一种在图上面遍历所有节点的深度优先搜索 (Depth...

D21/ 怎麽结合 ViewModel 和 Compose? - ViewModel

今天大概会聊到的范围 viewModel in Compose 今天的主题很单纯:如果专案中有使用...

Day-4 老玩家们最推荐、欧洲流行的 SCART 端子

现在若要使用怀旧主机、SCART 会是老玩家们最推荐的介面了。虽其最高仅支援 480i 解析度、但其...

[Day-3] 我的第一个C++程序

今天我要来记录我的第一个C++程序 上次介绍了Dev C++如何使用、建档以及C++的基本架构 如下...