Показать сообщение отдельно
Старый 25.11.2010, 00:58   #307
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Счастье Ответ: Фак по Юнити.

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 будет тебе скрипт вешать? Скрипт нужно подготовить для объекта заранее, если хочешь его на создаваемый объект повесить.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
pax (25.11.2010)