Вешаю этот скрипт на ячейку в панели (по сути ячейка это просто трансформ, созданный ngui), далее посылаю в него из другого скрипта в функцию Portrait_Drawer данные о текстуре (какую надо рисовать)..
Данные приходят, в консоль все выводится, что получена текстура, что вот она отрисована там-сям..
Для дебага вывел в консоль все координаты и вторую отрисовку этой же текстуры в любом другом месте чтобы проверять может я ее не вижу или напутал с локальными-абсолютными координатами..
Но она не появляется на экране.
Пробовал альтернативный вариант через OnGUI и GUI.DrawTexture а там все так же печально
Обязательно ли необходимо назначать в таком случае материал для текстуры вручную? В мануале написано что при отсутствии указания материала юнити сам какой то ставит по дефолту. Может быть дело в этом?
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;
public class GUI_Portrait_Drawer : MonoBehaviour {
public Transform panel_cell;
public Texture curr_tex;
public void Portrait_Drawer (Texture portrait) // main function -- функция рисования текстур, полученных из других скриптов
{
curr_tex = portrait; // set texture var -- присваиваем полученную текстуру к переменной для дальнейших обработок
panel_cell = gameObject.transform; // link with current cell's transform -- присваиваем трансформ ячейки куда рисовать к местной переменной для дальнейших обработок
// read transform x,y,z and scale -- читаем размеры ячейки чтобы нарисовать текстуру с таким же размером
Vector3 pos = panel_cell.localPosition;
pos.x = Mathf.RoundToInt(pos.x);
pos.y = Mathf.RoundToInt(pos.y);
pos.z = Mathf.RoundToInt(pos.z);
Vector2 scale = panel_cell.localScale;
print("--- Panel IS -- " + panel_cell);
print("--- PORTRAIT TO DRAW IS a -- " + curr_tex);
// NGUIEditorTools.DrawTiledTexture (Rect(pos.x,pos.y,scale.x,scale.y), curr_tex); // reserved -- резерв для использования с NGUI
Graphics.DrawTexture (new Rect(pos.x,pos.y,scale.x,scale.y), curr_tex); // draw texture -- рисуем полученное в границах ячейки (трансформа)
Graphics.DrawTexture (new Rect(1,1, 160,160), curr_tex); // test -- рисуем для теста в фиксированном месте чтобы проверить рисуется ли вообще что-то
print("--- DRAWING P0 COMPLETE in a -- x = " + pos.x + " y = " + pos.y + " z = " + pos.z + " Width " + scale.x + " Height " + scale.y);
}
}
using System.Collections;
public class GUI_Portrait_Drawer : MonoBehaviour {
public Transform panel_cell;
public Texture curr_tex;
public void Portrait_Drawer (Texture portrait) // main function -- функция рисования текстур, полученных из других скриптов
{
curr_tex = portrait; // set texture var -- присваиваем полученную текстуру к переменной для дальнейших обработок
panel_cell = gameObject.transform; // link with current cell's transform -- присваиваем трансформ ячейки куда рисовать к местной переменной для дальнейших обработок
// read transform x,y,z and scale -- читаем размеры ячейки чтобы нарисовать текстуру с таким же размером
Vector3 pos = panel_cell.localPosition;
pos.x = Mathf.RoundToInt(pos.x);
pos.y = Mathf.RoundToInt(pos.y);
pos.z = Mathf.RoundToInt(pos.z);
Vector2 scale = panel_cell.localScale;
print("--- Panel IS -- " + panel_cell);
print("--- PORTRAIT TO DRAW IS a -- " + curr_tex);
// NGUIEditorTools.DrawTiledTexture (Rect(pos.x,pos.y,scale.x,scale.y), curr_tex); // reserved -- резерв для использования с NGUI
Graphics.DrawTexture (new Rect(pos.x,pos.y,scale.x,scale.y), curr_tex); // draw texture -- рисуем полученное в границах ячейки (трансформа)
Graphics.DrawTexture (new Rect(1,1, 160,160), curr_tex); // test -- рисуем для теста в фиксированном месте чтобы проверить рисуется ли вообще что-то
print("--- DRAWING P0 COMPLETE in a -- x = " + pos.x + " y = " + pos.y + " z = " + pos.z + " Width " + scale.x + " Height " + scale.y);
}
}
upd. решено через добавление нового объекта на панели