Ang pagkakaiba sa pagitan ng pag-andar ng GameObject.SetActive at ng Component.enified na pag-aari sa Unity

Difference Between Gameobject



Kapag itinago namin ang isang GameObject sa proyekto ng Unity, maaari nating makamit ang layunin sa gameObject.SetActive (false), o maaari kaming magtalaga ng maling halaga sa pinagana na pag-aari upang makamit ang parehong layunin. Kaya ano ang pagkakaiba sa pagitan ng dalawa? Ngayon ay partikular kong isulat Ang isang demo ay na-verify.

Upang mapadali ang pagpapatunay, sadya kong nagsulat ng isang pasadyang Klase na nagmamana sa Imahe, at mga output Mag-log sa pangunahing pagpapaandar ng lifecycle para sa pag-verify. Narito gumagamit ako ng UGUI, MyImage.cs code ay ang mga sumusunod:



using UnityEngine using UnityEngine.UI public class MyImage : Image { protected override void Awake() { base.Awake() Debug.Log('Enter MonoBehaviour MyImage::Awake...') } // Use this for initialization protected override void Start () { base.Start() Debug.Log('Enter MonoBehaviour MyImage::Start...') } protected override void OnEnable() { base.OnEnable() Debug.Log('Enter MonoBehaviour MyImage::OnEnable...') } protected override void OnDisable() { base.OnDisable() Debug.Log('Enter MonoBehaviour MyImage::OnDisable...') } // Update is called once per frame void Update () { } }

Tingnan ang screenshot sa ibaba:





Pagkatapos ng pag-verify, ang mga sumusunod na konklusyon ay nakuha:

Parehong punto:

Kinokontrol ng pagpapaandar ng 1.gameObject.SetActive kung ang checkbox 1 sa nasa itaas na pigura ay naka-check, hindi naka-check, pagkatapos ay nakatago, naka-tik upang ipakita



2. Kinokontrol ng pinagana ang katangian kung ang check box 2 ay nasuri, at ang malinaw na panuntunan ay kapareho ng nasa itaas

pagkakaiba:

1. Kung ang check box 1 ng UI ay hindi naka-check bilang default, hindi mahalaga kung ang check box 2 ay naka-check o hindi, kapag ipinakita ang UI, ang lahat ng mga pagpapaandar ng MyImage.cs ay hindi naisakatuparan, na nangangahulugang ang script ay hindi na-load sa memorya

2. Kung ang check box 1 ng UI ay nasuri bilang default, ang check box 2 ay hindi na-check bilang default. Kapag ipinakita ang UI, ang pagpapaandar ng Gumising ng MyImage.cs ay papatayin, at iba pang mga pagpapaandar ay hindi naisakatuparan. Nangangahulugan ito na ang script ay Mai-load sa memorya, maliban sa pag-andar ng Gumising, iba pang mga pagpapaandar ay hindi naisakatuparan.

Matapos malaman ang pagkakaiba, kung gayon hindi namin gagamitin ang maling paggamit ng gameObject.SetActive at pinagana.