ETH官方钱包

前往
大廳
主題

【Unity x C#】在Unity裝NuGet程式庫(kù)、用AutoMapper複製ScriptableObject

%%鼠 拒收病婿 | 2021-03-18 23:54:43 | 巴幣 26 | 人氣 490

前言:
和朋友討論做個(gè)卡牌遊戲,規(guī)則差不多定好了,先別問(wèn)XD。
是程式也是美術(shù),夠爆肝,但很有趣...



NuGet
NuGet介紹()《NuGet作為Visual Studio擴(kuò)展,能夠簡(jiǎn)化在Visual Studio項(xiàng)目中添加、更新和刪除庫(kù)(部署為程序包)的操作?!?簡(jiǎn)單說(shuō)就是VS直接抓程式庫(kù)的工具。

直接抓下來(lái)的程式庫(kù)在Unity裡面會(huì)編譯不過(guò),需要透過(guò)這個(gè)套件去抓。

AutoMapper
Nuget裡面的一個(gè)程式庫(kù),之前在想"複製Class的方法",意外在這篇文章看到它。


ScriptableObject
一種Unity獨(dú)特的setting檔,參考
除了上面參考提到的好處,它有個(gè)哭笑不得的點(diǎn)是: 假設(shè)A腳本會(huì)使用到某個(gè)setting檔 B,若A把B的HP扣至0,則B的setting檔就會(huì)是0,下次再召喚B的時(shí)候它的HP還是0,直到遊戲關(guān)掉setting檔重置(所以ScriptableObject也不能拿來(lái)做存遊戲進(jìn)度,至少要寫個(gè)存檔的腳本在遊戲關(guān)掉前寫出它的值)。

為了避免上面的情況發(fā)生,所以我每次召喚卡片時(shí)須先把B的setting檔複製一份。
在Instance 卡片的時(shí)候呼叫Init方法。

這樣該卡片的setting檔就是一個(gè)副本,//Test的只是用來(lái)驗(yàn)證。


現(xiàn)在在想個(gè)問(wèn)題,卡片死亡時(shí)它的setting檔副本該寫個(gè)回收機(jī)制去回收,重新貼上正本的資料方便下次召喚時(shí)使用,還是不管它了,直接一張卡片一個(gè)副本?



後記:
腦袋還是好亂= =
送禮物贊助創(chuàng)作者 !
0
留言

創(chuàng)作回應(yīng)

樂(lè)小呈
拿 ScriptableObject 是直接對(duì)資料夾物件的引用,所以一改就會(huì)引想到其他用的人,他比較適合存固定的數(shù)據(jù)[e19]
2021-03-19 10:26:24
樂(lè)小呈
話說(shuō)也不應(yīng)該直接條ScriptableObject 的數(shù)值,你可以用一個(gè)卡牌容器去接數(shù)值,ScriptableObject永遠(yuǎn)只讀就不會(huì)有問(wèn)題,容器只需要用完就回收重置,這樣還有免費(fèi)的物件池可以用
2021-03-19 10:33:15
%%鼠 拒收病婿
感謝建議,我是想說(shuō)容器和ScriptableObject有相似的屬性,讓容器有點(diǎn)多餘(?) 若直接複製Scriptable副本是否就可以當(dāng)容器使用了
2021-03-19 13:33:38
KK
同上,把scriptable object 作為設(shè)定檔使用就好,另外寫一個(gè)結(jié)構(gòu)或者類別來(lái)存這份資料,牌庫(kù)的初始化則可以先把全部的設(shè)定檔建成一個(gè)字典,索引 key 是卡片序號(hào),value 則是上面的結(jié)構(gòu)或者類別,這樣不論誰(shuí)拿出來(lái)的卡片資料都是一樣的,而且只要改設(shè)定檔就全部套用。
2021-03-19 10:55:55
%%鼠 拒收病婿
直接在初始化把卡片序號(hào)讀進(jìn)字典檔這想法不錯(cuò)耶[e12] 這樣要召喚卡牌的話直接傳id跟字典要求卡片就好。
2021-03-19 13:38:12
%%鼠 拒收病婿
我現(xiàn)在是直接從Resources.load讀取。
2021-03-19 13:39:28
樂(lè)小呈
應(yīng)該說(shuō)重點(diǎn)是容器的"重用"吧?
你Clone的時(shí)候等於建立的新的變量(新的記憶體位置)把她和原始資料分離,但等你用完資料後這個(gè)變量就扔了 (釋放記憶體 GC)
我容器的意義就在這裡,實(shí)例化之後需要用就讀入這些資料,同樣可以達(dá)到和原始分離的目的,但差別是容器可以被回收,沒(méi)用到就關(guān)著,要用的時(shí)候在初始化,因?yàn)橹恍枰薷臄?shù)據(jù)所以無(wú)論用幾次他都是佔(zhàn)同一段記憶體位置
2021-03-22 16:42:45
樂(lè)小呈
不過(guò)這也是我猜測(cè)拉,我看他資料沒(méi)寫到GC相關(guān)的才這樣說(shuō),你可以自己用 profiler 測(cè)測(cè)看有沒(méi)有GC
2021-03-22 16:44:01
追蹤 創(chuàng)作集

作者相關(guān)創(chuàng)作

相關(guān)創(chuàng)作

更多創(chuàng)作