Unity3D 掛載的腳本取消勾選居然還會運行!舆乔!

一般來說和措,從設計初衷來看,把掛在物體上的腳本勾選狀態(tài)改為不勾選蜕煌,這個腳本就不會運行。

然而真實情形只是生命周期函數和用戶自定義的且外部不被訪問的函數不運行罷了诬留;

enabled設置為false斜纪,且方法為外部調用的這個是必定會被執(zhí)行,暫不討論文兑。
我遇到去掉鉤也運行的情況盒刚,是調用unity API導致的,難免有些意外绿贞,就此說道說道好了因块!
首先,神奇的代碼如下:

using UnityEngine;
public class testForChangeTexture : MonoBehaviour {
    AnimEmoj animEmoj;
    void Start () {
        animEmoj = GetComponent<AnimEmoj>();
    }
    private void OnMouseDown()
    {
        animEmoj.Playing(gameObject,0,-1);
    }
}

然后取消勾選該腳本籍铁,運行居然還會報錯:

明明取消了腳本的勾選

居然這個腳本會爆出對象為空警告

來來涡上,我們分析下為何他會報錯:顯然是animEmoj沒有賦值,也就是說Start方法沒有運行拒名。
綜上吩愧,我們先懷疑一下,就是事件監(jiān)聽這類的Unity內置方法增显,只要掛在游戲對象上雁佳,即便不勾選也會執(zhí)行;

好的,我們試試究竟是不是真的取消了勾選糖权,這個OnMouseDown()依舊運行堵腹!
如下,Debug一下即可:

using UnityEngine;
public class testForChangeTexture : MonoBehaviour {
    AnimEmoj animEmoj;
    void Start () {
        animEmoj = GetComponent<AnimEmoj>();
        Debug.Log("運行了Start方法星澳!");
    }
    private void OnMouseDown()
    {
        Debug.Log("我還在運行");
        animEmoj.Playing(gameObject,0,-1);
    }
}
運行前先掛載該腳本疚顷,但不勾選

好!! 見證奇跡時候到了(注意:Start里面的Debug沒有運行~):

對著掛載該腳本的游戲對象點擊,居然還是運行了

別浪募判,再試試OnTriggerEnter(),不勾選能進去不荡含?
代碼塊:

using UnityEngine;
public class testForChangeTexture : MonoBehaviour {
    AnimEmoj animEmoj;
    void Start () {
        Debug.Log("運行了Start方法!");
        animEmoj = GetComponent<AnimEmoj>();
    }
    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("我運行了届垫,"+other.name+"在碰我!");
    }
}

我真的取消了勾選释液,居然真的真的還是運行了!装处!

注意: Start里面的Debug依舊沒有運行~

再來一例

using UnityEngine;
public class testForChangeTexture : MonoBehaviour {
    public AnimEmoj animEmoj;
    public GameObject obj;
    void Start () {
        Debug.Log("進來误债?");
    }
    private void OnMouseDown()
    {
        Debug.Log("你沒有勾選,但我就是進來了妄迁!");
        if (null!=animEmoj)
        {
        animEmoj.Playing(obj, 0, -1);
        }
    }
}

Debug輸出&效果:

沒有勾選也跑的那么溜寝蹈,你說坑不坑

繞過Start直接賦值OnMouseDown()里面要用到的對象,運行起來發(fā)現腳本勾不勾選都make no diffrence了登淘;
總結: 腳本不被勾選箫老,大部分生命周期函數不會執(zhí)行,但是內置的事件監(jiān)測的方法黔州,譬如這個OnMouseDown()耍鬓,OnTriggerEnter();都能運行;
經過確認流妻,生命周期函數Awake牲蜀,OnApplicationPause,不勾選啟動時均會調用一次绅这,停止運行時OnDestoey會調用一次

還有一個筆者沒有試的涣达,那就是繼承了unity內置接口并實現的,被響應也會執(zhí)行吧…

好了证薇,要教大家躲坑了度苔;

  1. 如果在這些方法里面寫了邏輯,邏輯里面引用的對象的棕叫,先判斷對象是否為Null林螃;
  2. 如果這些事件監(jiān)聽的方法里面寫了音樂播放的,特效播放的俺泣,用代碼控制這個腳本的Active屬性沒用哦
    直接動態(tài)加載和卸載這個腳本就好了(Destory(GetComponet<yourcode.cs>()))
  3. 看了本文疗认,以后調試報錯就不會因為這個現象懵逼了
  4. 針對行文開頭提及的enabled設為false完残,外部調用方法的問題,建議為了穩(wěn)健横漏,可以先判斷enabled不為false時執(zhí)行谨设。

標簽:Unity3D、腳本編程缎浇、Bug扎拣、EventSystem、OnMouseDown素跺、OntriggerEnter二蓝、AddListener


快捷訪問:

  1. Unity3D 如何設置CubeMap
  2. UGUI Button OnClick事件統(tǒng)一管理
  3. UGUI Slider onValueChanged事件統(tǒng)一管理
  4. UGUI Toggle onValueChanged事件統(tǒng)一管理
  5. Unity3D監(jiān)測按鍵輸入(快捷鍵)的有效方法
  6. Unity3D Editor模式下的System.IO數據訪問
  7. Unity3D 掛載的腳本取消勾選居然還會運行!指厌! ←您在這里
  8. Unity 代碼動態(tài)勾選或取消材質球上的選項
  9. Unity SerializeField序列化字段導致Bug的跳坑筆記
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末刊愚,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子踩验,更是在濱河造成了極大的恐慌鸥诽,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,454評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件箕憾,死亡現場離奇詭異牡借,居然都是意外死亡,警方通過查閱死者的電腦和手機袭异,發(fā)現死者居然都...
    沈念sama閱讀 90,553評論 3 385
  • 文/潘曉璐 我一進店門钠龙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人御铃,你說我怎么就攤上這事俊鱼。” “怎么了畅买?”我有些...
    開封第一講書人閱讀 157,921評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長细睡。 經常有香客問我谷羞,道長,這世上最難降的妖魔是什么溜徙? 我笑而不...
    開封第一講書人閱讀 56,648評論 1 284
  • 正文 為了忘掉前任湃缎,我火速辦了婚禮,結果婚禮上蠢壹,老公的妹妹穿的比我還像新娘嗓违。我一直安慰自己,他們只是感情好图贸,可當我...
    茶點故事閱讀 65,770評論 6 386
  • 文/花漫 我一把揭開白布蹂季。 她就那樣靜靜地躺著冕广,像睡著了一般。 火紅的嫁衣襯著肌膚如雪偿洁。 梳的紋絲不亂的頭發(fā)上撒汉,一...
    開封第一講書人閱讀 49,950評論 1 291
  • 那天,我揣著相機與錄音涕滋,去河邊找鬼睬辐。 笑死,一個胖子當著我的面吹牛宾肺,可吹牛的內容都是我干的溯饵。 我是一名探鬼主播,決...
    沈念sama閱讀 39,090評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼锨用,長吁一口氣:“原來是場噩夢啊……” “哼丰刊!你這毒婦竟也來了?” 一聲冷哼從身側響起黔酥,我...
    開封第一講書人閱讀 37,817評論 0 268
  • 序言:老撾萬榮一對情侶失蹤藻三,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后跪者,有當地人在樹林里發(fā)現了一具尸體棵帽,經...
    沈念sama閱讀 44,275評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,592評論 2 327
  • 正文 我和宋清朗相戀三年渣玲,在試婚紗的時候發(fā)現自己被綠了逗概。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,724評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡忘衍,死狀恐怖逾苫,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情枚钓,我是刑警寧澤铅搓,帶...
    沈念sama閱讀 34,409評論 4 333
  • 正文 年R本政府宣布,位于F島的核電站搀捷,受9級特大地震影響星掰,放射性物質發(fā)生泄漏。R本人自食惡果不足惜嫩舟,卻給世界環(huán)境...
    茶點故事閱讀 40,052評論 3 316
  • 文/蒙蒙 一氢烘、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧家厌,春花似錦播玖、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,815評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽维蒙。三九已至,卻和暖如春脓斩,著一層夾襖步出監(jiān)牢的瞬間木西,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,043評論 1 266
  • 我被黑心中介騙來泰國打工随静, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留八千,地道東北人。 一個月前我還...
    沈念sama閱讀 46,503評論 2 361
  • 正文 我出身青樓燎猛,卻偏偏與公主長得像恋捆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子重绷,可洞房花燭夜當晚...
    茶點故事閱讀 43,627評論 2 350

推薦閱讀更多精彩內容