如何使用WWW类来改变Sprite?

问题描述 投票:0回答:1

我正在努力更改精灵图像以使用 Unity 中的 WWW 类。

我在网站上有一张个人资料 png 图片,我想将其加载到游戏中。我想更改附加到游戏对象的精灵渲染器的精灵,以便新的精灵是个人资料的精灵。

我认为 IEnumerator 不能与事件一起使用,所以我将其重新排列如下。没有错误,但没有成功。

请告诉我该怎么做。

using UnityEngine;
using System.Collections;
using System.IO;
using UXLib.User;
using UXLib.Connect;

public class UserImage : MonoBehaviour {
    UXAndroidManager androidManager;
    private SpriteRenderer spriteRenderer;
    public Material mat;


void Start(){
    spriteRenderer = GetComponent<SpriteRenderer> ();
    androidManager.StartGallery (LogIn.userId);

}

void Awake () {
    GameObject go = GameObject.Find ("AndroidManager");
    androidManager = go.GetComponent<UXAndroidManager> ();
    androidManager.InitAndroid ();

    androidManager.OnAnd_ProfileImageChanged += OnProfileImageChaned;
}

void OnDestroy() {
    androidManager.OnAnd_ProfileImageChanged -= OnProfileImageChaned;
}

void OnProfileImageChaned(string filePath) {
    UXPlayerController player = UXPlayerController.Instance;
    player.ChangeProfileImage(filePath);

    string logString = player.GetLastReceivedData();

    ProfileImage (filePath);

}
IEnumerator ProfileImage(string filePath){
    WWW www = new WWW (filePath);
    yield return www;


    SpriteRenderer renderer = gameObject.GetComponent<SpriteRenderer>();
    Sprite sprite = new Sprite();
    sprite = Sprite.Create(www.texture, new Rect(0, 0, 170, 170),new Vector2(0, 0),100.0f);

    renderer.sprite = sprite;
    renderer.material = mat;
}
}
c# unity-game-engine url sprite
1个回答
0
投票

在协程中调用

ProfileImage

协程是一个可以暂停执行(yield)直到 给定的 YieldInstruction 完成。

所以,只需将

OnProfileImageChaned
中的呼叫更改为:

ProfileImage (filePath);

至:

StartCoroutine(ProfileImage(filePath));

我还建议查看协程的统一文档: http://docs.unity3d.com/ScriptReference/Coroutine.html http://docs.unity3d.com/Manual/Coroutines.html

© www.soinside.com 2019 - 2024. All rights reserved.