【问题标题】:Unity3D Sprite not UpdatingUnity3D Sprite 未更新
【发布时间】:2017-07-21 13:03:40
【问题描述】:

我正在尝试使用 playerprefs 和下拉 UI 元素更新精灵。 选择白天或夜晚时间将确定在场景重新启动/启动时渲染哪个精灵。但是,当我选择白天或夜晚时,它不起作用。 它不会在加载时更改精灵。我也正确地在检查器中设置了精灵。

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

public class repeatingBackground : MonoBehaviour {

    private BoxCollider2D groundCollider;
    private float groundHorizontalLength;

    private Sprite spriteRenderer;
    public Sprite daySprite;
    public Sprite nightSprite;

    private int bgImg;

    void Start () {

        bgImg = PlayerPrefs.GetInt ("backgroundImg");
        spriteRenderer = GetComponent<Sprite>(); 
        if (bgImg == 1 || bgImg == 0)
            spriteRenderer = daySprite;
        else if (bgImg == 2)
            spriteRenderer = nightSprite;
        groundCollider = GetComponent<BoxCollider2D> ();
        groundHorizontalLength = groundCollider.size.x;
    }
    // Update is called once per frame
    void Update () {
        if (transform.position.x < -groundHorizontalLength) {
            RepositionBackground ();
        }
    }
    public void OnValueChanged(Dropdown value)
    {
        PlayerPrefs.SetInt ("backgroundImg", value.value);
        PlayerPrefs.Save ();
    }
    private void RepositionBackground()
    {
        Vector2 groundOffset = new Vector2 (groundHorizontalLength * 2f, 0);
        transform.position = (Vector2)transform.position + groundOffset;
    }
}

【问题讨论】:

    标签: c# android unity3d sprite


    【解决方案1】:

    如果你在层次结构中有一个图像组件,你应该访问图像组件而不是精灵,没有像'精灵这样的东西/strong>' 直接附加到 GameObject,它是通过 SpriteRendererImage 完成的。

    尝试更改此设置

     spriteRenderer = GetComponent<Sprite>();
    

    收件人(如果您使用的是图片)

    spriteRenderer = GetComponent<Image>();
    if (bgImg == 1 || bgImg == 0)
        spriteRenderer.sprite = daySprite;
    else if (bgImg == 2)
        spriteRenderer.sprite = nightSprite;
    

    或(如果您使用的是 SpriteRenderer)

    spriteRenderer = GetComponent<SpriteRenderer>();
        if (bgImg == 1 || bgImg == 0)
            spriteRenderer.sprite = daySprite;
        else if (bgImg == 2)
            spriteRenderer.sprite = nightSprite;
    

    【讨论】:

      猜你喜欢
      • 2022-06-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-04
      • 1970-01-01
      相关资源
      最近更新 更多