 |
Общие вопросы вопросы не попадающие ни в один из доступных разделов |
22.06.2012, 19:57
|
#376
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Ну собственно тогда делай инспектор для TextAsset с проверкой формата в OnEnable, если такой формат поддерживается твоим редактором - загружай нужный редактор. Я так делал для наших графов в Antares Universe. Если формат не читабелен - отображал дефолтный редактор. Правда графы все с расширением bytes были, так что в файлик просто добавь заголовок, чтобы проверить формат.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
|
|
22.06.2012, 21:00
|
#377
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Спасибо. Только DrawDefaultInspector() не отображает дефолтный инспектор. Может в OnEnable можно как-то выключить мой редактор?
Кстате, плохо, что формат файла не проверишь( Да и вообще лучше бы сделали FileAsset, а то для бинарных файлов использовать TextAsset как-то не логично)))
|
(Offline)
|
|
22.06.2012, 22:18
|
#378
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
для бинарных файлов TextAsset.bytes все байты "файла". Единственное сохранять надо непосредственно в файл и делать Refresh потом. Махинации да, но работать можно.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.06.2012, 23:51
|
#379
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
pax, а ты пользовался Graphics.DrawMeshNow или Graphics.DrawMesh?
Не представляю зачем они в игре могут понадобится.
Я через Graphics.DrawMeshNow хочу рисовать модель в EditorWindow.
Уже почти все работает, но столкнулся с кучей проблем.
1) Нужно задавать RenderSettings.ambientLight, а после закрытия окна возвращать старой значение. Причем в событии Repaint это почему-то не срабатывает)
2) Загружать перспективную матрицу проекции, хотя это не проблема.
3) Почему-то надо изменять GL.SetRevertBackfacing на true. Ибо кулинг в OnGUI не так работает.
4) Без Transform нормально нельзя вращать модель(
5) Не работает тест глубины. И как ее включить я пока не пойму(
Вообщем код пока выглядит так
void OnGUI() {
if(Event.current.type == EventType.Repaint) {
GL.PushMatrix();
float aspect = position.width/position.height;
Matrix4x4 projMatrix = Matrix4x4.Perspective(65, aspect, 0, 100);
GL.LoadProjectionMatrix(projMatrix);
GL.SetRevertBackfacing(true);
OnRender();
GL.SetRevertBackfacing(false);
GL.PopMatrix();
}
}
private void OnRender() {
material.SetPass(0);
Graphics.DrawMeshNow(mesh, meshPosition, Quaternion.Euler(meshRotation));
}
|
(Offline)
|
|
23.06.2012, 12:07
|
#380
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от WISHMASTER35
pax, а ты пользовался Graphics.DrawMeshNow или Graphics.DrawMesh?
|
Нет, я не пробовал использовать ее в GUI. По моему там другие методы были для визуализации 3d в GUI... что-то я уже забыл...
|
(Offline)
|
|
23.06.2012, 13:02
|
#381
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Везде рекомендуют создавать в сцене временный объект и камеру и рендерить объект в RenderTexture, а потом рисовать в OnGUI. Ужасный способ и только для Pro.
Других методов не нашел(
|
(Offline)
|
|
23.06.2012, 23:14
|
#382
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Есть способ рисовать камеру через Handles.DrawCamera(...), в OnGUI я использовал Camera.Render для отрисовки внутри GUI, правда в рантайме а не в редакторе, но думаю будет одно и то же, только не забывать очищать глубину перед отрисовкой...
|
(Offline)
|
|
24.06.2012, 16:10
|
#383
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Вообще не понял как отрендерить модель в EditorWindow с помощью Camera.Render.
Render это не статический метод. Получается камеру брать надо из сцены, а в сцене ее может и не быть.
И даже если вызвать Render у камеры из сцены, то отрендерится вся сцена и все равно не в мое окно(:
|
(Offline)
|
|
24.06.2012, 17:53
|
#384
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Всем привет. У кого нибудь нету туториала синхронизации анимации по сети нету? Стандартный пример не подходит т.к. не работает на версии 3.4.
|
(Offline)
|
|
24.06.2012, 18:29
|
#385
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Ну или хотя бы дайте намек как это все синхронизировать? Есть 3 вида анимации. Бег вперед, влево, вправо. Если по скорости только то не выйдет. Нажатие клавиши направления отправлять? Или только в зависимости от значения vertical и horizontal (плюс или минус).
|
(Offline)
|
|
24.06.2012, 19:58
|
#386
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от WISHMASTER35
Вообще не понял как отрендерить модель в EditorWindow с помощью Camera.Render.
Render это не статический метод. Получается камеру брать надо из сцены, а в сцене ее может и не быть.
И даже если вызвать Render у камеры из сцены, то отрендерится вся сцена и все равно не в мое окно(:
|

using UnityEditor; using UnityEngine;
public class ModelRendererWindow : EditorWindow {
[MenuItem("Window/render")] public static void CreateWin() { var win = CreateInstance<ModelRendererWindow>(); win.autoRepaintOnSceneChange = true; win.Show(); }
private Camera cam; private GameObject cube; private GameObject parentGO;
void OnEnable() { cam = new GameObject("Cam", typeof(Light), typeof(Camera)).camera; cam.light.cullingMask = cam.cullingMask; cam.light.range = 10;
cam.gameObject.hideFlags = HideFlags.HideAndDontSave; cam.enabled = false; cam.transform.position = new Vector3(0, 0, -3); cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.hideFlags = HideFlags.HideAndDontSave; cube.transform.rotation = Random.rotation; parentGO = new GameObject("parent"); parentGO.hideFlags = HideFlags.HideAndDontSave; cube.transform.parent = parentGO.transform; cam.transform.parent = parentGO.transform; parentGO.transform.position = Vector3.one * 70000f; }
void OnDisable() { DestroyImmediate(parentGO); }
void OnGUI() { if (Event.current.type == EventType.Repaint) { var rect = new Rect(0, 0, position.width, position.height); Handles.SetCamera(rect, cam); Handles.DrawCamera(rect, cam); } }
}
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.06.2012, 21:40
|
#387
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
Все бы хорошо, но z тест все равно не работает(: А у тебя работало?
pie, а их надо синхронизировать? Если их везде вовремя включать, то должно быть нормально.
|
(Offline)
|
|
24.06.2012, 22:39
|
#388
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Вопросы от новичка
Сообщение от WISHMASTER35
Все бы хорошо, но z тест все равно не работает(: А у тебя работало?
|
Попробуй так (но для этого надо Pro):

using UnityEditor; using UnityEngine;
public class ModelRendererWindow : EditorWindow {
[MenuItem("Window/render")] public static void CreateWin() { var win = CreateInstance<ModelRendererWindow>(); win.autoRepaintOnSceneChange = true; win.Show(); }
private Camera cam; private GameObject cube; private GameObject parentGO;
void OnEnable() { parentGO = new GameObject("parent"); parentGO.hideFlags = HideFlags.HideAndDontSave;
cam = new GameObject("Cam", typeof(Light), typeof(Camera)).camera; cam.light.cullingMask = cam.cullingMask; cam.light.range = 10;
cam.gameObject.hideFlags = HideFlags.HideAndDontSave; cam.enabled = false; cam.transform.position = new Vector3(0, 0, -3); cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.hideFlags = HideFlags.HideAndDontSave; cube.transform.rotation = Random.rotation; cube.transform.parent = parentGO.transform;
cube = GameObject.CreatePrimitive(PrimitiveType.Cube); cube.hideFlags = HideFlags.HideAndDontSave; cube.transform.rotation = Random.rotation; cube.transform.position = new Vector3(0,0,0.1f); cube.transform.parent = parentGO.transform;
cube.transform.parent = parentGO.transform; cam.transform.parent = parentGO.transform; parentGO.transform.position = Vector3.one * 70000f; }
void OnDisable() { DestroyImmediate(parentGO); }
void OnGUI() { if (Event.current.type == EventType.Repaint) { var rt = RenderTexture.GetTemporary((int) position.width, (int) position.height, 24); cam.targetTexture = rt; RenderTexture.active = rt; cam.clearFlags = CameraClearFlags.SolidColor; cam.backgroundColor = new Color32(49,77,121,255); cam.Render(); RenderTexture.active = null; cam.targetTexture = null; GUI.DrawTexture(new Rect(0, 0, position.width, position.height),rt); RenderTexture.ReleaseTemporary(rt); } }
}
|
(Offline)
|
|
24.06.2012, 22:54
|
#389
|
ПроЭктировщик
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений (для 64 пользователей)
|
Ответ: Вопросы от новичка
Как узнать изменились ли координаты x и z. Чтобы поставить это в условие. Типо этого:
if (изменились ли координаты x и y) {
}
|
(Offline)
|
|
24.06.2012, 23:41
|
#390
|
Бывалый
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений (для 357 пользователей)
|
Ответ: Вопросы от новичка
pax, спасибо, но у меня инди.
А нельзя сделать, чтобы когда рисуешь например box'ы, то они не вылазили за границы? А то, если текстура у box'а большая, то box не уменьшается, хотя при ExpandWidth(true) кажется растягивается.
pie, сравнивай с предыдущими координатами.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:35.
|