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

Garanta sua matrícula hoje e ganhe + 2 meses grátis

Continue sua jornada tech com ainda mais tempo para aprender e evoluir

Quero aproveitar agora
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.