5
respostas

Erro na propriedade size

Quando digito o código do chão, aparece o seguinte erro

        this.tamanhoDaImagem = this.GetComponent<SpriteRenderer>().size.x;  

Erro CS1061 "SpriteRenderer" não contém uma definição para "size" e não foi possível encontrar nenhum método de extensão "size" que aceite um primeiro argumento do tipo "SpriteRenderer" (há uma diretiva de uso ou referência de assembly ausente?) FlappyAviao

5 respostas

Boa tarde Matheus, Tudo bom?

Vc consegue passar o código completo que vc fez? É estranho dar esse erro. Qual versão da unity vc ta usando?

Oi , boa noite. Eu estou usando a versão 5.5.0

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Piso : MonoBehaviour {
    [SerializeField]
    private float velocidade;

    private Vector3 posicaoInicial;
    private float tamanhoDaImagem;

    // Use this for initialization
    void Awake () {
        posicaoInicial = this.transform.position;
        this.tamanhoDaImagem = this.GetComponent<SpriteRenderer>().size.x;
    }

    // Update is called once per frame
    void Update () {
        this.transform.Translate(Vector3.left * this.velocidade);
    }
}

Bom dia Matheus, tudo bom?

Então, o problema é justamente a versão. se olharmos na documentação dessa versão vc pode ver que o spriteRenderer realemente não tinha essa propriedade size

https://docs.unity3d.com/550/Documentation/ScriptReference/SpriteRenderer.html

No curso eu estou usando a versão 2017.4 da Unity.

Entendi e tem como fazer algo parecido na 5.5 ?

Provavelmente vc pode ter o mesmo efeito usando o SpriteRenderes.sprite.border https://docs.unity3d.com/550/Documentation/ScriptReference/Sprite-border.html

Para as versões mais novas a equipe da unity deve ter adicionado a propriedade size para evitar a quebra de encapsulamento nesse caso onde vc acessa a propriedade border do sprite que está sendo desenhado.