public void SetSprite(string name) { SpriteRect rect = _spriteInfo.GetSprite(name); Vector2 imgDimensions = new Vector2(_spriteTexture.width, _spriteTexture.height); renderer.material.mainTextureOffset = rect.GetOffset(imgDimensions); renderer.material.mainTextureScale = rect.GetScale(imgDimensions); }
private IEnumerator Once() { string[] spriteNames = _spriteInfo.GetSpriteNames(); renderer.material.mainTexture = _spriteTexture; _isPlaying = true; for (int i = 0; i < spriteNames.Length; i++) { SpriteRect rect = _spriteInfo.GetSprite(spriteNames[i]); Vector2 imageDimensions = new Vector2(_spriteTexture.width, _spriteTexture.height); renderer.material.mainTextureOffset = rect.GetOffset(imageDimensions); renderer.material.mainTextureScale = rect.GetScale(imageDimensions); yield return(new WaitForSeconds(_interval)); } Stop(); }
private IEnumerator PingPong() { string[] spriteNames = _spriteInfo.GetSpriteNames(); renderer.material.mainTexture = _spriteTexture; _isPlaying = true; while (true) { for (int i = -(spriteNames.Length - 1); i < spriteNames.Length - 1; i++) { SpriteRect rect = _spriteInfo.GetSprite(spriteNames[Mathf.Abs(i)]); Vector2 imageDimensions = new Vector2(_spriteTexture.width, _spriteTexture.height); renderer.material.mainTextureOffset = rect.GetOffset(imageDimensions); renderer.material.mainTextureScale = rect.GetScale(imageDimensions); yield return(new WaitForSeconds(_interval)); } } }
// Corotina para a execução do sprite no modo Loop // Os outros modos de execução possuem corotinas muito semelhantes entre si, por isso só essa será detalhada private IEnumerator Loop() { //Busca a lista de nomes no atlas, seta a textura do material e habilita a opção '_isPlaying' string[] spriteNames = _spriteInfo.GetSpriteNames(); renderer.material.mainTexture = _spriteTexture; _isPlaying = true; while (true) // Loop infinito { for (int i = 0; i < spriteNames.Length; i++) //Para cada sprite no sprite sheet (por ordem) { SpriteRect rect = _spriteInfo.GetSprite(spriteNames[i]); // Pega o retângulo equivalente Vector2 imageDimensions = new Vector2(_spriteTexture.width, _spriteTexture.height); // Armazena a dimensões do atlas renderer.material.mainTextureOffset = rect.GetOffset(imageDimensions); // Seta o offset do material, de acordo com o retângulo atual renderer.material.mainTextureScale = rect.GetScale(imageDimensions); // Seta a escala do material, de acordo com o retângulo atual yield return(new WaitForSeconds(_interval)); // Delay entre frames } } }