C# Unity3D GetComponent performansa etkisi nedir?

  • Konuyu başlatan Konuyu başlatan 10732
  • Başlangıç Tarihi Başlangıç Tarihi
  • Mesaj Mesaj 0
  • Görüntüleme Görüntüleme 71
  • Etiketler Etiketler
    nedir performans

10732

Uzman
Katılım
17 Eylül 2024
Mesajlar
1.502
Çözümler
4
Beğeniler
1.169
Arkadaşlar merhaba.

Hemen örnek koduda atayım size;
C#:
void Update(){
if (Input.GetMouseButtonDown(0))
        {

            hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            if (hit.collider != null)
            {
             
                SuperScript sc = hit.collider.gameObject.GetComponent<SuperScript>();
                sc.playObject();


            }
        }
  }

Böyle bir kodda diyelim, 1000 tane farklı nesnenin yad aynı nesnenin scriptine eriştik. Performans etkisi ne olur?



Aynı şekilde diyelim Objeleri ve Scripteleri havuzladık ve aşağıdaki kodu çalıştırdık. Performansa etkisi ne olur?
C#:
void Update(){
if (Input.GetMouseButtonDown(0))
        {

            hit = Physics2D.Raycast(cam.ScreenToWorldPoint(Input.mousePosition), Vector2.zero);
            if (hit.collider != null)
            {
             
                 for(int i = 0; i<objectPool.Count; i++)
                {
                    if(objectPoll[i] == hit.collider.gameObject)
                    {
                        SuperScript sc = scriptPool[i];
                        sc.play();
                        break;
                    }
                }

            }
        }
  }

Sizin performans için bir öneriniz var mıdır?

Arkadaşlar beni kandırmadıysalar eğer, mesela SuperScript içine onMouseDown adlı fonksiyonu eklersek, çoklu nesnelerde bozuluyormuş dediler. Performansı düşürüyormuş. Ondan onMouseDown hazır metodunu eklemedim. Dışarıdan bir Input Manager ile RayCast ekledim.
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…