0
私は、playerprefsとドロップダウンUI要素を使用してスプライトを更新しようとしています。 昼夜を選択すると、シーンの再起動/開始時にレンダリングされるスプライトが決まります。しかし、私が昼夜を選択すると、それは動作しません。 ロード時にスプライトを変更していません。私はスプライトが正しくインスペクタにセットされているようにしています。あなたは、階層内のImageコンポーネントを持っている場合は、Imageコンポーネントないスプライトにアクセスする必要がありUnity3Dスプライトが更新されない
は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;
}
}