- Home /
Can't find Yield, LoadImageIntoTexture doesn't work with Texture
I have two extremely irritating errors in the following code:
using UnityEngine;
using System.Collections;
public class ControlDebugging : MonoBehaviour {
Texture2D tex;
WWW text;
Material mat;
// Use this for initialization
void Start () {
mat = new Material("Shader \"Alpha Additive\" {" +
"Properties { _Color (\"Main Color\", Color) = (1,1,1,0) }" +
"SubShader {" +
" Tags { \"Queue\" = \"Transparent\" }" +
" Pass {" +
" Blend One One ZWrite Off ColorMask RGB" +
" Material { Diffuse [_Color] Ambient [_Color] }" +
" Lighting On" +
" SetTexture [_Dummy] { combine primary double, primary }" +
" }" +
"}" +
"}");
text = new WWW(Application.dataPath + "/Models/Textures/RailText.jpg");
yield text;
mat.mainTexture = new Texture2D(256, 256, TextureFormat.DXT1, false);
text.LoadImageIntoTexture(mat.mainTexture);
}
}
The first error is that Unity can't find 'yield' (Type or namespace could not be found), but I'm pretty sure it's supposed to be in System.Collections, which I have the using directive for.
The second error is that text.LoadImageIntoTexture(mat.mainTexture); won't compile because mat.mainTexture is a Texture, not a Texture2D. Of course, in Unity's own documentation, it uses that exact line. That, and this code worked yesterday...ideas?
Answer by robertbu · Jul 31, 2013 at 05:23 PM
I obviously didn't test it, but this gets rid of your compiler errors:
using UnityEngine;
using System.Collections;
public class ControlDebugging : MonoBehaviour {
Texture2D tex;
WWW text;
Material mat;
// Use this for initialization
IEnumerator Start () {
mat = new Material("Shader \"Alpha Additive\" {" +
"Properties { _Color (\"Main Color\", Color) = (1,1,1,0) }" +
"SubShader {" +
" Tags { \"Queue\" = \"Transparent\" }" +
" Pass {" +
" Blend One One ZWrite Off ColorMask RGB" +
" Material { Diffuse [_Color] Ambient [_Color] }" +
" Lighting On" +
" SetTexture [_Dummy] { combine primary double, primary }" +
" }" +
"}" +
"}");
text = new WWW(Application.dataPath + "/Models/Textures/RailText.jpg");
yield return text;
mat.mainTexture = new Texture2D(256, 256, TextureFormat.DXT1, false);
text.LoadImageIntoTexture((Texture2D)mat.mainTexture);
}
}
That's really odd that Unity didn't require me to use the extra WWW bits before...Well, it works, at least for now. Thanks
Just BTW TextureFormat.DXT1 is a great tip to all for a quality fix on some platforms
Your answer
Follow this Question
Related Questions
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Yield And Return 2 Answers
Delaying through yield 2 Answers
Yield Problems 2 Answers
Trying to create a static class for WWW-based functions and such 0 Answers