Показать сообщение отдельно
Старый 17.01.2017, 16:24   #9
Evgen
Разработчик
 
Аватар для Evgen
 
Регистрация: 12.01.2011
Адрес: Moscow
Сообщений: 419
Написано 68 полезных сообщений
(для 100 пользователей)
Ответ: Как рендерить в Editor скриптах

Сообщение от Nex Посмотреть сообщение
?? Вроде всё ??
Запускаешь игру@смотришь картинку в папке.
Не.. не.. не.. Давайте без костылей. Когда было мало опыта я тоже их применял. Мне нужна специальная кнопочка в редакторе - нажал и рисунки обновились. Очень удобно.

Собственно внизу код, результат вроде, как надо. Результат не зависит от размера Game окна. Что я собственно не мог побороть в начале.

public class Generate2DIcons : ScriptableObject
{
	[MenuItem ("Custom/Generate2DIcons")]
	static void Generate(){
		EditorWindow.focusedWindow.maxSize = new Vector2 (10, 10);

		// Создаем сцену
		EditorApplication.NewScene();

		GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
		cube.transform.position = new Vector3(0, 1, -7);
		cube.transform.rotation = Quaternion.Euler(45,45,0);
		SaveScreenshoot("cube.png");
		DestroyImmediate(cube);

		Debug.Log("Ok");
	}

	static void SaveScreenshoot(string name){
		// Делаем скриншот
		int sqr = 256;
		RenderTexture rtex = new RenderTexture(sqr,sqr,24);
		Camera.main.targetTexture = rtex;
		Camera.main.Render();
		RenderTexture.active = rtex;
		Texture2D tex = new Texture2D(sqr,sqr,TextureFormat.RGB24, false);
		tex.ReadPixels(new Rect(0, 0, sqr, sqr), 0, 0);
		tex.Apply();
		RenderTexture.active = null;
		Camera.main.targetTexture = null;
		byte[] bytes = tex.EncodeToPNG ();
		System.IO.File.WriteAllBytes(Application.dataPath + "/"+name,bytes);
	}
}
Не знаю для чего здесь нужно вот это:
EditorWindow.focusedWindow.maxSize = new Vector2 (10, 10);
но вроде нужно.
(Offline)
 
Ответить с цитированием