- 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
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                