holokit-LineRendererBase LineUnity的吊詭之處

Bug描述:

使用holokit給出的example里的Lineunity (繼承了LineRenderBase的基類)+Bezier(繼承了LineBase的基類)實(shí)現(xiàn)曲線

但是出現(xiàn)nullpointer錯(cuò)誤

問題1:

lineunity里使用的defaultlinematerial 名字使用shader.find找不到該material

按理說(shuō),可以手動(dòng)規(guī)定linematerial,這樣不必使用default linematerial,也避免直接修改lineunity的代碼(這個(gè)畢竟是庫(kù)函數(shù))

但由于lineunity是直接新建Object, 然后addcomponent()得到的,

因此在生成lineunity之前,無(wú)法指定linematerial,

生成之后則自動(dòng)跑OnEnable(),

即在linematerial linecolor未經(jīng)初始化的時(shí)候,自己使用默認(rèn)值初始化并且使用了,

這種執(zhí)行順序改不了,并且感覺很吊詭

解決方案:

修改lineunity(這個(gè)是暫時(shí)的,最終要么換一個(gè)庫(kù)類,要么自己重寫一個(gè)類似的類)

問題2

定義了

[Tooltip("The source Line this component will render")]

protected LineBase source;

之后立即定義了

public virtual LineBase Source

? ? ? ? {

? ? ? ? ? ? get

? ? ? ? ? ? {

? ? ? ? ? ? ? ? if (source == null)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? source = GetComponent<LineBase>();

? ? ? ? ? ? ? ? }

? ? ? ? ? ? ? ? return source;

? ? ? ? ? ? }

? ? ? ? ? ? set

? ? ? ? ? ? {

? ? ? ? ? ? ? ? source = value;

? ? ? ? ? ? ? ? if (source == null)

? ? ? ? ? ? ? ? {

? ? ? ? ? ? ? ? ? ? enabled = false;

? ? ? ? ? ? ? ? }

? ? ? ? ? ? }

? ? ? ? }


讓人懷疑這個(gè)程序員寫什么==

這樣寫的作用:

直接引用source的時(shí)候,未經(jīng)初始化。null。

引用 Source的時(shí)候,source被初始化了,其實(shí)就是在使用source。相當(dāng)于給source加了一個(gè)別名,但是必須在使用source之前調(diào)用一次Source。

并且這個(gè)bug導(dǎo)致了,debug.log()在這里,是會(huì)出現(xiàn)薛定諤的貓現(xiàn)象。

一旦log,調(diào)用了Source,就會(huì)影響結(jié)果,導(dǎo)致null pointer的Bug消失。








?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,181評(píng)論 0 3
  • 阿里巴巴 JAVA 開發(fā)手冊(cè) 1 / 32 Java 開發(fā)手冊(cè) 版本號(hào) 制定團(tuán)隊(duì) 更新日期 備 注 1.0.0 阿...
    糖寶_閱讀 7,880評(píng)論 0 5
  • ORACLE自學(xué)教程 --create tabletestone ( id number, --序號(hào)usernam...
    落葉寂聊閱讀 1,241評(píng)論 0 0
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,639評(píng)論 1 32
  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說(shuō)明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,954評(píng)論 0 9

友情鏈接更多精彩內(nèi)容