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.