Sprite Rendering Cost Calculation

First of all asking before asking this question I have already read following post for the clearance of my mind.

Sprite Renderer

Texture 2D

I want to change my background texture as per device aspect ratio detection. For this purpose I have following code:

var newSprite : Sprite; 

function Start () {

    GetComponent(SpriteRenderer).sprite = newSprite;

}

Or another way to load sprite is :

Sprite myFruit = Resources.Load("fruits_1", typeof(Sprite)) as Sprite;

Using above code I can able to load new sprite as per my requirement.
But I want to reduce following disadvantage from this.

At present basically I set background sprite of 960 x 640 for iPhone 4 and its get loaded.
After that I change my background sprite to 2048 x 1536 as I detect the device with iPad Retina display. So another texture get loaded.
I want this process to happen single time so how to manage sprite texture in correct way.

Also thanks for your attention towards this question.

1 Answer

1

Just remove the sprite component from your gameObject that has the 960x640 background.
Then put your screen size detection code first and call AddComponent():

void Awake(){
	// empty sprite variable.
	Sprite myBg;
	// iphoneScreen being a boolean that is true if your using a iphone screen size.
    if (iphoneScreen){ 
       myBg = Resources.Load("iphoneTexture", typeof(Sprite)) as Sprite;
    }else{
       myBg = Resources.Load("ipadTexture", typeof(Sprite)) as Sprite;
    }
    //add a sprite render component and assign the sprite into it.
    SpriteRenderer spRen = gameObject.AddComponent("SpriteRenderer") as SpriteRenderer;
    spRen.sprite = myBg;
}

Thanks for your answer and knowledge sharing. Now I got my concept clear. If you have more knowledge regarding this then I have added some more questions related to similar topic. So please provide your suggestion for that also.

–