如何使用WWW class 来改变Sprite?
How to use WWW class to change the Sprite?
我正在努力更改 sprite 图像以在 Unity 中使用 WWW class。
我想在游戏中加载网站上的个人资料 png 图片。我想更改附加到游戏对象的 Sprite Renderer 的 Sprite,以便新的 sprite 是个人资料的 Sprite。
我认为 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;
}
}
在协程中调用 ProfileImage
。
A coroutine is a function that can suspend its execution (yield) until
the given given YieldInstruction finishes.
所以,只需将 OnProfileImageChaned
中的调用从:
更改为
ProfileImage (filePath);
至:
StartCoroutine(ProfileImage(filePath));
我还建议您查看协程的统一文档:
http://docs.unity3d.com/ScriptReference/Coroutine.html
http://docs.unity3d.com/Manual/Coroutines.html
我正在努力更改 sprite 图像以在 Unity 中使用 WWW class。
我想在游戏中加载网站上的个人资料 png 图片。我想更改附加到游戏对象的 Sprite Renderer 的 Sprite,以便新的 sprite 是个人资料的 Sprite。
我认为 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;
}
}
在协程中调用 ProfileImage
。
A coroutine is a function that can suspend its execution (yield) until the given given YieldInstruction finishes.
所以,只需将 OnProfileImageChaned
中的调用从:
ProfileImage (filePath);
至:
StartCoroutine(ProfileImage(filePath));
我还建议您查看协程的统一文档: http://docs.unity3d.com/ScriptReference/Coroutine.html http://docs.unity3d.com/Manual/Coroutines.html