1. Как работать с бинарными файлами (read, write)? Никак не могу найти подходящий класс.
|
В самом Юнити обертки для этих операций нет, ищи подобное для самого JavaScript
2. Как рендерить в текстуру?
|
Буквально позавчера (или нет?) разбирался, вот к чему пришел:

var ProjectedText : String = "";
private var cam : GameObject;
private var tObj: GameObject;
private var proj : Projector;
private var shadow_tex:RenderTexture;
static var original_tex:Texture;
function Start () {
cam = GameObject.FindWithTag("AdditionalCam");
tObj = GameObject.FindWithTag("ProjectorHelper");
proj = gameObject.GetComponent(Projector);
shadow_tex = RenderTexture(Screen.width, Screen.height, 0);
original_tex = proj.material.GetTexture("_ShadowTex");
shadow_tex.width = 1024;
shadow_tex.height = 1024;
shadow_tex.useMipMap = true;
shadow_tex.Create();
// set special object GUIText to text string
tObj.guiText.text = ProjectedText;
tObj.guiText.material.color = Color(0.1, 0.1, 0.1, 1);
// render to texture screen
cam.camera.enabled = true;
cam.camera.targetTexture = shadow_tex;
cam.camera.Render();
// asign texture to material
proj.material.SetTexture("_ShadowTex",shadow_tex);
// reset to defaults
cam.camera.enabled = false;
tObj.guiText.text = "";
}
function OnApplicationQuit() {
proj.material.SetTexture("_ShadowTex",original_tex);
}
Что делает:
Рендерит в текстуру проектора текст, содержащийся в строке, в соответствии с настройками объекта с GUIText и тегом "ProjectorHelper"
Как работает:
- находит дополнительную (можно и с основной - поправка 1) камеру, объект с текстом GUIText, устанавливает ссылку на компонент проектора (так было надо), сохраняет оригинальную текстуру проектора в переменную (чтобы потом в редакторе проектор не "испортился")
- создает рендер-текстуру, задает ее настройки. Обрати внимание, что рендер-текстура не создается моментально - только после проверки IsActive или вызова Create()
- устанавливается текст для объекта, который будет рендерится (рендерится только он из-за настроек culling layers камеры)
- включается дополнительная камера (по умолчанию выключена была, чтоб не отвлекала)
- устанавливается текстура, в которую пойдет рендер
- делается рендер))
- применяется отрендереная текстура в материал проектора
- сбрасываются настройки
Поправка 1.
Если делать это через главную и единственную камеру в сцене, то я думаю нужно не включать-выключать компонент камеры у её объекта и вместо этого устанавливать в конце её targetTexture = 0. Ну и если нужно это делать в рантайме, то все из Start переносится в Update по условию (или без него, если вы мазохист)
3. Надо ли удалять объект после оператора new? Если да, то где: awake(), start(), update(), ...?
|
Тут точно не скажу... Порой бывает нужно оставлять объекты до конца работы програмы (или сцены), иногда - удалять после пары действий.
Awake и прочие - это уже куски скрипта. А кто на новый GO будет тебе скрипт вешать? Скрипт нужно подготовить для объекта заранее, если хочешь его на создаваемый объект повесить.