烟台搭建网站建设制作,网站到期怎么续费,wordpress 亚马逊插件,搜索关键词然后排名怎样提升当使用图集 SpriteAtlas 时#xff0c; 从中获取的 Sprite 的 texture 是图集中整张图片#xff0c;为了给 RawImage 设置 Texture#xff0c;有两种方式#xff1a;
方式1#xff1a;使用以下扩展函数#xff0c;其原理是给 RawImage 设置整张纹理#xff0c;然后设置…当使用图集 SpriteAtlas 时 从中获取的 Sprite 的 texture 是图集中整张图片为了给 RawImage 设置 Texture有两种方式
方式1使用以下扩展函数其原理是给 RawImage 设置整张纹理然后设置 uvRect 使之只显示 Sprite 对应部分。这种方式的优点是SpriteAtlas 不需要设置 read/write从而不额外增加内存消耗 /// summary/// 对RawImage组件通过Sprite来设置其Texture 支持sprite是从图集中来的方式/// /summary/// param namerawImage/param/// param namesprite/parampublic static void SetTextureBySprite(this RawImage rawImage, Sprite sprite){rawImage.texture sprite.texture; //这个texture是整个图集上的一大张TexturerawImage.uvRect sprite.textureRect;}
方式2新建一个Texture从精灵中使用 GetPixels 的方式获取对应区域上的图像。这种方式需要图集设置 read/write因此比较消耗内存 /// summary/// 从精灵创建相应的纹理 如果是单纹理的直接取如果是图集的则要求图集设置 Read/Write Enabled并且精灵设置为 Full Rect 而不能是Tight/// /summarypublic static Texture2D CreateTextureBySprite(Sprite sprite){if ((int)(sprite.rect.width) ! sprite.texture.width){//图集 要求图集设置 Read/Write Enabled 尽量不要用 Texture全部使用 Sprite否则打开 Read/Write 后双倍内存并且精灵设置为 Full Rect 而不能是Tightif ((int)sprite.rect.width ! (int)sprite.textureRect.width || (int)sprite.rect.height ! (int)sprite.textureRect.height){Debug.LogErrorFormat(CreateTextureBySprite: sprite [{0}] must be FULL RECT请在精灵属性设置不能是Tight否则宽度高度不对! \r\n sprite.rect: width{1}, height{2}; textureRect: x{3}, y{4}, width{5}, height{6},sprite.name, (int)sprite.rect.width, (int)sprite.rect.height,(int)sprite.textureRect.x,(int)sprite.textureRect.y,(int)sprite.textureRect.width,(int)sprite.textureRect.height);}Texture2D newText new Texture2D((int)sprite.rect.width, (int)sprite.rect.height);Color[] newColors sprite.texture.GetPixels((int)sprite.textureRect.x,(int)sprite.textureRect.y,(int)sprite.textureRect.width,(int)sprite.textureRect.height);newText.SetPixels(newColors);newText.Apply();return newText;}else{return sprite.texture;}}