forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

pax 04.04.2012 20:17

Ответ: Фак по Юнити.
 
PHP код:

public GameObject drop;
Update() {
if (
Input.GetKeyDown("g")) {
var 
go Instantiate(droptransform.position transform.forwardQuaternion.identity) as GameObject;
go.rigidbody.AddForce(transform.forward 1000ForceMode.Impulse); 


SaM_ 04.04.2012 20:42

Ответ: Фак по Юнити.
 
Вот, работает, спасибо!

pax 04.04.2012 20:45

Ответ: Фак по Юнити.
 
PHP код:

public GameObject drop// префаб дропа
Update() {
if (
Input.GetKeyDown("g")) {
// инстансирование дропа и сохранение в переменную go
var go Instantiate(droptransform.position transform.forwardQuaternion.identity) as GameObject;
// добавление импульса твердому телу (RigidBody назначенному префабу)
go.rigidbody.AddForce(transform.forward 1000ForceMode.Impulse); 


SaM_ 04.04.2012 20:50

Ответ: Фак по Юнити.
 
Как всеже изменить немного коодинаты дропа относительно игрока + что бы спавн происходил перед самим игроком?
Я делаю так:
PHP код:

Vector3 newpos =  new Vector3(transform.position.3transform.position.ytransform.position.z) + transform.forward;
rb Instantiate(dropnewpos Quaternion.identity) as GameObject

Спавн происходит там, где и запланировано, но не поворачивается вместе с игроком.

pax 04.04.2012 20:55

Ответ: Фак по Юнити.
 
PHP код:

Vector3 height transform.up 1.5f// высота 1,5 метра
Vector3 forward transform.forward 3// три метра перед собой
Vector3 newpos =  transform.position forward height


WISHMASTER35 04.04.2012 21:04

Ответ: Фак по Юнити.
 
Написал пару функция упрощающих работу с GUI редактора.
Код:

public static T ObjectField<T>(string label, T field) where T : Object {
                GUILayout.BeginHorizontal();
                        GUILayout.Label(label);
                        field = (T)EditorGUILayout.ObjectField((Object)field, typeof(T), false);
                GUILayout.EndHorizontal();
                return field;
        }

public static System.Enum EnumPopup(string label, System.Enum selected) {
                GUILayout.BeginHorizontal();
                        GUILayout.Label( label );
                        selected = EditorGUILayout.EnumPopup(selected);
                GUILayout.EndHorizontal();
                return selected;
        }

И еще пару подобных. Код значительно уменьшился в других местах.
Только не понятно почему where T : System.Enum считается ошибкой.

pax 04.04.2012 21:07

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224584)
Только не понятно почему where T : System.Enum считается ошибкой.

http://msdn.microsoft.com/ru-ru/library/d5x73970.aspx

и зачем делать горизонталы с метками, если есть перегруженная функция, которая автоматом метку выводит и все ровно делает?

WISHMASTER35 04.04.2012 21:26

Ответ: Фак по Юнити.
 
pax, что за функция?

pax 04.04.2012 21:29

Ответ: Фак по Юнити.
 
Если ты не заметил, то там три перегрузки, две из которых принимают label
http://unity3d.com/support/documenta...jectField.html
А у этой аш шесть, 4 с лэйблом
http://unity3d.com/support/documenta...EnumPopup.html

WISHMASTER35 04.04.2012 21:59

Ответ: Фак по Юнити.
 
Блин! Как же туплю. Не глянул на все варианты метода. Хотя все равно мой вариант ObjectField выглядит намного проще.
pax, а ты ngui использовал или свой писал? Не пойму как там что все объекты имея одинаковые z координаты отображаются правильно и со всех сторон. Как будь-то рисуется в порядке от родителя к детям.

pax 04.04.2012 22:23

Ответ: Фак по Юнити.
 
Не использовал, но сортировка должна быть обязательно. Если проще, там у шейдера должен быть отключен ztest и zwrite

WISHMASTER35 04.04.2012 23:39

Ответ: Фак по Юнити.
 
В ngui один меш на все элементы. Там уже в самом меше все отсортировано. Отсортировать каждый объект для рендеринга от родительского к дочернему наверно нельзя(
Но и создавать меш каждый кадр это тратить кучу памяти. А для мобильного частые вызовы сборщика мусора совсем не гуд. Замкнутый круг получается(

кстати, я вот не пойму событие типа OnMouseOver вызываются для всех колайдеров? Не слишком ли это затратно, ведь это почти никогда не надо. И на с тачами это я так понимаю не работает?

pax 04.04.2012 23:49

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224600)
В ngui один меш на все элементы. Там уже в самом меше все отсортировано. Отсортировать каждый объект для рендеринга от родительского к дочернему наверно нельзя(
Но и создавать меш каждый кадр это тратить кучу памяти. А для мобильного частые вызовы сборщика мусора совсем не гуд. Замкнутый круг получается(

Зачем пересоздавать? Использовать тот же.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 224600)
кстати, я вот не пойму событие типа OnMouseOver вызываются для всех колайдеров? Не слишком ли это затратно, ведь это почти никогда не надо. И на с тачами это я так понимаю не работает?

Да для всех, у кого есть метод обработчик. Только если есть метод обработчик.

WISHMASTER35 05.04.2012 00:12

Ответ: Фак по Юнити.
 
Цитата:

Зачем пересоздавать? Использовать тот же.
Только на массивы для вершин, текстурных координат и индексов много памяти уйдет. Еще проблематично сделать в таком способе поддержку нескольких материалов. Придется сначала подсчитывать сколько материалов используется, а потом формировать для каждого меш. еще на пересчет текста уйдет время.
А объект может узнать, что в его иерархии произошли изменения? Для Editor'а такое событие есть, а для скрипта не видел. Интересно как там происходит добавление новых элементов.

Цитата:

Да для всех, у кого есть метод обработчик. Только если есть метод обработчик.
А я уж испугался))

pax 05.04.2012 06:44

Ответ: Фак по Юнити.
 
Ну памяти уйдет не так уш и много, а ускорить пересоздание массивов можно разными способами.

Вот про событие изменения объекта ничего не знаю, что за событие вызывается в редакторе?

Вообще можно, при добавлении или удалении компонента, мессадж вверх по иерархии слать.

WISHMASTER35 05.04.2012 08:21

Ответ: Фак по Юнити.
 
Да вообщем-то можно пересоздавать массивы только когда полигонов станет больше.
А вот использовать два материала на самом деле еще сложнее. Если нету проверки з-буфера, то отрисовать два меша правильно вообще нельзя, если конечно они не накладываются друг на друга.

Событие EditorWindow.OnHierarchyChange.

pax 05.04.2012 08:33

Ответ: Фак по Юнити.
 
Если отрисовка идет в порядке созданных полигонов, то почему нет? Сортировать полигоны по субмешам со своими материалами тоже не сложно.

WISHMASTER35 05.04.2012 15:25

Ответ: Фак по Юнити.
 
Я видел модели на которых было несколько материалов. Это называется субмеш? И я так понимаю материалов может быть не больше 3х т.к. есть только uv, uv1, uv2 ?
И за сколько дравкалов отрисуется такой объект, если у него первый полигон будет с одним материалом, второй с другим, третий снова с первым и так вперемешку.

pax 05.04.2012 15:33

Ответ: Фак по Юнити.
 
Субмешей может быть сколько угодно, на каждый свой материал.
Дравколов будет столько, сколько субмешей.

uv, uv1, uv2 указываются для вершин, субмеш это набор индексов вершин треугольников.
Причем uv это одно и то же что и uv1

WISHMASTER35 05.04.2012 17:23

Ответ: Фак по Юнити.
 
Даже не представляю как это реализовано в unity.
Отрисовать несколько групп треугольников, причем в таком порядке, что, треугольник то с 1й группы, то со 2й, то снова с 1й.
На opengl es 1.0 такое будет работать?

Конечно, если можно будет не использовать 3-буфер, то можно повысить скорость. Особенно благодаря отключению очистки буфера глубины у камеры.
Но вызов для каждой вершины TransformPoint и запись в массив может быть довольно медленным.

pax 05.04.2012 20:07

Ответ: Фак по Юнити.
 
1-2-1 нельзя, можно 1-2-3, где 1 и 3 с одинаковыми материалами.
И зачем трансформировать вершины, если это делать видеокарта?

WISHMASTER35 05.04.2012 20:17

Ответ: Фак по Юнити.
 
Цитата:

И зачем трансформировать вершины, если это делать видеокарта?
Если самому собирать все в один меш, то и вершины надо самому трансформировать.
Цитата:

1-2-1 нельзя, можно 1-2-3, где 1 и 3 с одинаковыми материалами.
Так уже не пойдет(: Там даже порядок отрисовки сабмешей не задашь, не говоря уже о треугольниках.

Может можно было бы создать шейдер, который принимает массив текстур или просто какое-то количество и в шейдере выбирать нужную текстуру. Только не знаю можно ли так сделать и куда записывать какому треугольнику какую текстуру.

pax 05.04.2012 20:22

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 224661)
Так уже не пойдет(: Там даже порядок отрисовки сабмешей не задашь, не говоря уже о треугольниках.

Зачем? Поставил камеру в нужные координаты, а вершины в локальных координатах своего объекта.

В шейдер максимум может попасть до 8 текстур на современных видеокартах, и переключение текстур делать совсем не стоит. Проще упаковать текстуры в одну большую и вывести за один дравкол.

SaM_ 06.04.2012 14:23

Ответ: Фак по Юнити.
 
Как в скрипте можно создать прямую, а еще лучше функцию, по которой будет перемещаться объект?

pax 06.04.2012 14:29

Ответ: Фак по Юнити.
 
PHP код:

public Vector3 start = new Vector3(-10,-10,-10);
public 
Vector3 end = new Vector3(10,10,10);
public 
float moveTime 3;
private 
float currentTime0;

public 
void Update()
{
   
currentTime += Time.deltaTime;
   var 
currentTime moveTime;
   
transform.position Vector3.Lerp(startendt);


Писал прям сюда, так что могут быть ошибки

SaM_ 06.04.2012 14:56

Ответ: Фак по Юнити.
 
Я сделал свой коллайдер из 11 поликов, установил на объект, все вроде бы хорошо, но во время самой игры коллайдер свою функцию не выполняет. Все работает только если поставить галочку к Convex.

Как исправить? Что я делаю не так? Почему при convex работает, а так - нет?

pax 06.04.2012 15:00

Ответ: Фак по Юнити.
 
Двигающиеся объекты должны быть Convex, а еще иметь RigidBody с флажком IsKinematic

UPD: можно сделать компаунды: соединить несколько коллайдеров одним RigidBody

SaM_ 07.04.2012 16:01

Ответ: Фак по Юнити.
 
pax, IsKinematic - если не двигающиеся, поправка.
Как сделать повторение анимации несколько раз подряд?

pax 07.04.2012 16:09

Ответ: Фак по Юнити.
 
IsKinematic если двигающийся вручную кодом через transform.
Повторение - поставить клипу Loop

SaM_ 07.04.2012 16:44

Ответ: Фак по Юнити.
 
Я имел введу, как не зациклить, а повторить? Как сделать так, что бы при нажатии кнопки анимация проигрывалась, например, ровно 3 раза?

WISHMASTER35 07.04.2012 18:39

Ответ: Фак по Юнити.
 
SaM_, там кажешься можно было в очередь анимации ставить http://unity3d.com/support/documenta...layQueued.html . Только не знаю одну и ту же можно поставить в очередь.

WISHMASTER35 08.04.2012 16:33

Ответ: Фак по Юнити.
 
Как включить цвет вершин в шейдере?
Пишу так
Код:

Shader "XGUI/XGUIShader" {
        Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
        }
        SubShader {
                Tags { "Queue" = "Transparent" }
                LOD 200
               
                Cull Off
               
                ZWrite Off
                ZTest NotEqual
               
                Blend SrcAlpha OneMinusSrcAlpha
               
                BindChannels {
                        Bind "Vertex", vertex
                          Bind "texcoord", texcoord
                          Bind "Color", color
                }
               
                Pass {
                        Lighting Off
                        SetTexture [_MainTex] { combine texture }
                }
        }
}

Вроде это должен делать Bind "Color", color но не делает.

pax 08.04.2012 16:35

Ответ: Фак по Юнити.
 
combine texture * primary
или
combine texture * primary DOUBLE

WISHMASTER35 08.04.2012 19:42

Ответ: Фак по Юнити.
 
Получилось так:
Код:

Shader "XGUI/XGUIShader" {
        Properties {
                _MainTex ("Base (RGB)", 2D) = "white" {}
        }
        SubShader {
                Tags { "Queue"="Transparent" "RenderType"="Transparent" }
                LOD 200
               
                Cull Off
                Lighting Off
                Blend SrcAlpha OneMinusSrcAlpha
               
                ZWrite Off
                ZTest NotEqual
               
                BindChannels {
                        Bind "Vertex", vertex
                          Bind "texcoord", texcoord
                          Bind "Color", color
                }
               
                Pass {
                        SetTexture [_MainTex] { combine texture * primary }
                }
        }
}

Оптимизировать там нечего?
А "RenderType"="Transparent" что-то дает? А то что с ним, что без него.

WISHMASTER35 10.04.2012 21:52

Ответ: Фак по Юнити.
 
pax, а ты пробовал скрывать скрипты в инспекторе? Оказывается сохранение такого GO вызывает ошибку SerializedObject of SerializedProperty has been Disposed и или вообще скрытые скрипты не сохраняются, или не полностью сохраняются. Не пойму как можно при сохранении сделать эти скрипты не скрытыми.

pax 10.04.2012 22:01

Ответ: Фак по Юнити.
 
не пробовал

WISHMASTER35 11.04.2012 19:21

Ответ: Фак по Юнити.
 
pax, значит баг юнити. Там еще, если в OnDisable попытаться снять флаги скрытия скриптов, то события OnEnable/OnDisable начинают постоянно вызываться(
Я не пойму, если в ExecuteInEditMode скрипте я в режиме редактора создал меш, то это меш должен сохраняться? Или его лучше создавать перед каждым стартом игры? В префаб меш почему-то не сохраняться(

pax 12.04.2012 08:58

Ответ: Фак по Юнити.
 
меш надо сохранять в ассеты с расширением *.asset
http://unity3d.com/support/documenta...eateAsset.html

Amatsu 12.04.2012 09:55

Ответ: Фак по Юнити.
 
Пытаюсь вставить в созданную в юнити анимацию Animation Event. Пишет, что не может найти скрипты для прикрепления к ивенту. Может кто знает правило написание скрипта с функцией на C#, чтобы интерфейс Animation Event его увидел?

pax 12.04.2012 10:38

Ответ: Фак по Юнити.
 
Должно увидеть:

PHP код:

public void MyEvent1()
{

}

public 
void MyEvent2(int param)
{

}

public 
IEnumerator MyEvent3(string param)
{



Но учти, что скрипт должен висеть на том же объекте что и Animation с редактируемым клипом.

Amatsu 12.04.2012 10:53

Ответ: Фак по Юнити.
 
Скорее всего из–за последнего пункта и не видело, спасибо

WISHMASTER35 12.04.2012 13:45

Ответ: Фак по Юнити.
 
вот думаю как сделать систему отслеживания нажатия на элементы моего gui.
Делаю так:
В одном скрипте, в LateUpdate пускать от курсора луч и если была коллизия с какой-то кнопкой, то поднять у нее флаг, что над ней мышка или она нажат.
А в следующем кадре в Update опрашивать эти кнопки. Только будет запаздывать на кадр, но думаю это не страшно.
Но вот не пойму когда кнопка должна сбрасывать у себя эти флаги? В Update нельзя т.к. идет их опрос, в LateUpdate нельзя т.к. можно сбросить новые данные. Наверно я что-то делаю абсолютно не так.

Можно было бы сделать, что бы каждая кнопка сама пускала в себя луч, но хочу это выделить в отдельный скрипт, который бы потом мог хранить данные о том, что мышка или тач над элементом gui или свободен и передавать его в игру.

pax 12.04.2012 14:07

Ответ: Фак по Юнити.
 
зачем в GUI лучи?

WISHMASTER35 12.04.2012 14:16

Ответ: Фак по Юнити.
 
Цитата:

зачем в GUI лучи?
коллизию с кнопками проверять. Конечно в 2д это не имеет смысла, но вопрос не в этом.

pax 12.04.2012 14:19

Ответ: Фак по Юнити.
 
Если это 3d объекты, то симитировать мышь можно достаточно просто:

1. Сначала мышь ни над чем.
2. Ты кидаешь луч каждый FixedUpdate, если во что-то попал - то OnMouseEnter для этого объекта.
3. Запоминаешь объект.
4. Если в следующем цикле попал в тот же объект - OnMouseOver
5. Если в другой, то тому что запомнен - OnMouseExit, новый запоминаешь и ему OnMouseEnter.
6. Если Input.GetMouseDown и есть запомненный объект - OnMouseDown
7. и т.д.

А почему тебе не подходят эти события?
http://unity3d.com/support/documenta...MouseExit.html
http://unity3d.com/support/documenta...MouseDown.html
http://unity3d.com/support/documenta...MouseDrag.html
http://unity3d.com/support/documenta...ouseEnter.html
http://unity3d.com/support/documenta...MouseOver.html
http://unity3d.com/support/documenta...OnMouseUp.html

WISHMASTER35 12.04.2012 16:06

Ответ: Фак по Юнити.
 
Цитата:

А почему тебе не подходят эти события?
Я хочу что бы и на сенсорном экране работало. Тем более в этом случае пришлось бы вешать на каждую кнопку обработчик ее нажатия.
У меня такая структура:
_рутовый объект
____меню 1 и его обработчик
_______кнопки
____меню 2 и его обработчик
_______кнопки
т.е. обработчик и не на самой кнопке и не на самом рутовом объекте. Тут если посылать события, то всем потомкам рутового объекта, а это медленно. Вот и хочу, что бы из любого места можно было узнать состояние кнопки.

Запоминать объекты это то же не очень. Тем более в каждом FixedUpdate луч пускать.
Хорошо бы в последнем FixedUpdate пустить луч, в Update обработать все кнопки, а в LateUpdate сбросить флаги. Но как узнать, что FixedUpdate последний?

WISHMASTER35 12.04.2012 18:25

Ответ: Фак по Юнити.
 
Блин! FixedUpdate не перед каждым Update вызывается. Из-за этого не всегда срабатывает нажатие на кнопку( Это ппц(
Может можно как-то из главного скрипта отсылать сообщения только объектам, которые будут обрабатывать его, а не всем подряд?

pax 12.04.2012 20:54

Ответ: Фак по Юнити.
 
FixedUpdate срабатывает 100 раз в секунду.
Причем здесь каждый FixedUpdate? Все что я написал надо сделать в одном скрипте. И про сообщения писал только тому объекту под которым луч. Хоть пытайся понимать что тебе предлагают.

Andvrok 19.04.2012 00:15

Ответ: Фак по Юнити.
 
Можно как-то ограничить скорость GUI.RepeatButton?

WISHMASTER35 19.04.2012 00:18

Ответ: Фак по Юнити.
 
Есть у меня TileSet со списком объектов класса Tile.
Tile это обычный класс, ни от чего не унаследованный. У каждого тайла есть свой id.
И есть скрипт Map, у которой есть ссылка на TileSet и поля в которые нужно записывать id тайлов. Сейчас мне эти id приходится вручную писать. Можно ли сделать, что бы id можно было выбрать TileSet'а, а не писать их вручную?
id - это сейчас просто int.

Делать в Editor'е редактирование каждого поля - не выход т.к. поля могут удаляться\добавляться или просто их быть много.

Или лучше тайл наследовать от ScriptableObject и как обычно записывать каждый объект в ссылку?

pax 19.04.2012 07:03

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Andvrok (Сообщение 225876)
Можно как-то ограничить скорость GUI.RepeatButton?

Как понять ограничить? Если просто изменить количество срабатываний, то сделай переменную времени следующего срабатывания и запускай код только по достижении этого времени, а потом увеличивай время на нужный интервал.

Цитата:

Сообщение от WISHMASTER35 (Сообщение 225877)
Есть у меня TileSet со списком объектов класса Tile.
Tile это обычный класс, ни от чего не унаследованный. У каждого тайла есть свой id.
И есть скрипт Map, у которой есть ссылка на TileSet и поля в которые нужно записывать id тайлов. Сейчас мне эти id приходится вручную писать. Можно ли сделать, что бы id можно было выбрать TileSet'а, а не писать их вручную?
id - это сейчас просто int.

Делать в Editor'е редактирование каждого поля - не выход т.к. поля могут удаляться\добавляться или просто их быть много.

Или лучше тайл наследовать от ScriptableObject и как обычно записывать каждый объект в ссылку?

Мало что понял, но я бы для назначения id сделал бы выпадающее меню.

WISHMASTER35 19.04.2012 14:31

Ответ: Фак по Юнити.
 
Мне надо как-то в Editor'е определить нажал ли я на id тайла или что-то другое. Для этого id придется сделать специальным классом, что бы отличать от других int'ов.
И потом в Editor'е как-то переопределить поле редактирования для этого типа элемента.
Тогда должно получится.

WISHMASTER35 20.04.2012 21:46

Ответ: Фак по Юнити.
 
Решил я достать все SerializedProperty из скрипта и вручную все поля рисовать, что бы можно было изменить в инспекторе поле для моего типа.
Только не пойму как проверить поле какого типа храниться в SerializedProperty? Т.е. мне надо это SerializedProperty сравнить с typeof(MyClass).

pax 20.04.2012 21:54

Ответ: Фак по Юнити.
 
http://unity3d.com/support/documenta...pertyType.html
http://unity3d.com/support/documenta...pertyType.html

WISHMASTER35 20.04.2012 22:19

Ответ: Фак по Юнити.
 
Как бэ моего класса нету в SerializedPropertyType. Разве сначала проверить на SerializedPropertyType.ObjectReference, а потом достать ссылку и проверить ее.
Я думал может можно проще.

pax 20.04.2012 23:53

Ответ: Фак по Юнити.
 
Честно - не пользовался этим сериалайзд проперти. Всегда сами писали отображение нужных свойств с помощью EditorGUI + делали SetDirty

WISHMASTER35 21.04.2012 19:00

Ответ: Фак по Юнити.
 
Цитата:

а потом достать ссылку и проверить ее
А черт! Тип ссылки никак не проверишь. typeof(property.objectReferenceValue) конечно не работает.

Разве SerializedProperty.type возвращает например строку PPtr<$Block>. Только не понятно с чем такое сравнивать надо.

наверно сую я свой нос туда куда не надо)
Хотел сделать скрипт карты, а в нем ссылки на тайлы земли, травы и др. И чтобы в эти ссылки можно было записать только объекты из tileset'а, который тоже с этом скрипте.
На каждую переменную делать вручную поле будет не удобно т.к. часто придется изменять и редактор скрипта(

Декомпилировал класс Editor. Вот так рисуется инспектор
Код:

internal bool DoDrawDefaultInspector()
{
    EditorGUI.BeginChangeCheck();
    this.serializedObject.Update();
    SerializedProperty iterator = this.serializedObject.GetIterator();
    for (bool flag = true; iterator.NextVisible(flag); flag = false)
    {
        EditorGUILayout.PropertyField(iterator, true, new GUILayoutOption[0]);
    }
    this.serializedObject.ApplyModifiedProperties();
    return EditorGUI.EndChangeCheck();
}

А дальше настоящий дремучий лес. Но ясно, что моя идея не реализуем, если конечно не переписать GUI.

SaM_ 24.04.2012 00:00

Ответ: Фак по Юнити.
 
Прошу помощи!
Данный скрипт по идеи должен генерировать лабиринт из блоков.
Никаких ошибок не выдает, на сцену помещен правильно, изъянов найти не могу. Но при запуске unity просто виснет и не отвечает - в чем проблема?
xxx

pax 24.04.2012 00:17

Ответ: Фак по Юнити.
 
PHP код:

while (== 0) ; 

лишняя точка с запятой

WISHMASTER35 24.04.2012 20:07

Ответ: Фак по Юнити.
 
Как думаете свой static batching в инди версии реально сделать? Теоретически это довольно просто, но может я каких-то подводных камней не вижу.

И пару вопросов по нему есть.
Если в сцене есть прозрачные оъекты с которыми надо сортировать объекты, то статический батчинг это как-то учитывает?
Есть какие-то ограничения на размеры сбатченного меша? А то как бы, если весь уровень слепится в один меш, то придется весь уровень каждый раз рисовать.

Nuprahtor 24.04.2012 20:38

Ответ: Фак по Юнити.
 
CombineChildren.cs в стандартных скриптах делает собирает все модели в одну. Для разных материалов создается своя модель. Работает в бесплатной версии.

WISHMASTER35 25.04.2012 18:50

Ответ: Фак по Юнити.
 
Nuprahtor, батчит он даже больше, чем стандартный статический батчинг. Вот только он и не статические объекты батчит( И если объект с данный материалом всего один, то он все равно создаст его копию(.
Надо будет доделать этот скрипт. Или может уже есть где улучшенная версия?

Кстате, почему, если в скрипте нету Start(), то его нельзя отключить в инспекторе?

pax 25.04.2012 19:26

Ответ: Фак по Юнити.
 
enable отключает Update, FixedUpdate и OnGUI (может еще какие). Если их нет в скрипте, то и отключать нечего.

WISHMASTER35 26.04.2012 21:17

Ответ: Фак по Юнити.
 
Подправил CombineChildren.cs что бы работал только со статическими объектами.
Но вот прикол! На андроиде все gameObject.isStatic равны false. Хотя в редакторе норм. Это так надо?


Часовой пояс GMT +4, время: 14:22.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot