Unity protobuf中repeated轉C#文件List只讀問題
- 介紹
- 問題
- 解決方案
- 總結
介紹
工具這里我就不多介紹了,如果有用到ProtoGen工具的可以繼續看一下我后面的方法。
問題
如下圖所示,我這里隨便用了一個.proto文件,看下我這里面的repeated標記的字段,然后在對比我下面對應的C#文件發現是只讀的不能賦值。
對應的C#文件如下圖所示
對比了一下發現這個repeated標記的數組生成的C#文件對應的字段是只讀的,沒有Set屬性,那么出現這種情況的原因只能是因為生成的文件強制生成的是只讀屬性而不是可讀可寫的屬性。
解決方案
順著先找到我們剛才運行的.Bat命令文件,找到將.proto文件轉成C#文件時使用的工具是什么。
從上面的這個文件中能看出來,我們實際上運行的是ProtoGen里面的一個可執行文件。
找到下面文件夾中的生成C#的配置文件如下圖,雙擊打開
Ctrl + F搜索一下LABEL_REPEATED找到對應的位置
修改文件如下,刪除畫紅框的這段 <xsl:if test=“not($optionXml)”>readonly</xsl:if>
修改文件如下,在刪除掉畫紅框部分
都修改完結果如下所示
保存文件退出 然后重新生成文件嘗試一下
總結
這個其實就是文件中的配置默認生成的list是私有且只有get屬性的,修改生成的配置文件即可解決這個問題。