Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 22.06.2012, 19:57   #376
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Ну собственно тогда делай инспектор для TextAsset с проверкой формата в OnEnable, если такой формат поддерживается твоим редактором - загружай нужный редактор. Я так делал для наших графов в Antares Universe. Если формат не читабелен - отображал дефолтный редактор. Правда графы все с расширением bytes были, так что в файлик просто добавь заголовок, чтобы проверить формат.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо pax за это полезное сообщение:
cahekp (22.06.2012), WISHMASTER35 (22.06.2012)
Старый 22.06.2012, 21:00   #377
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Спасибо. Только DrawDefaultInspector() не отображает дефолтный инспектор. Может в OnEnable можно как-то выключить мой редактор?
Кстате, плохо, что формат файла не проверишь( Да и вообще лучше бы сделали FileAsset, а то для бинарных файлов использовать TextAsset как-то не логично)))
(Offline)
 
Ответить с цитированием
Старый 22.06.2012, 22:18   #378
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

для бинарных файлов TextAsset.bytes все байты "файла". Единственное сохранять надо непосредственно в файл и делать Refresh потом. Махинации да, но работать можно.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
cahekp (22.06.2012)
Старый 22.06.2012, 23:51   #379
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 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
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Сообщение от WISHMASTER35 Посмотреть сообщение
pax, а ты пользовался Graphics.DrawMeshNow или Graphics.DrawMesh?
Нет, я не пробовал использовать ее в GUI. По моему там другие методы были для визуализации 3d в GUI... что-то я уже забыл...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 23.06.2012, 13:02   #381
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Везде рекомендуют создавать в сцене временный объект и камеру и рендерить объект в RenderTexture, а потом рисовать в OnGUI. Ужасный способ и только для Pro.
Других методов не нашел(
(Offline)
 
Ответить с цитированием
Старый 23.06.2012, 23:14   #382
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Вопросы от новичка

Есть способ рисовать камеру через Handles.DrawCamera(...), в OnGUI я использовал Camera.Render для отрисовки внутри GUI, правда в рантайме а не в редакторе, но думаю будет одно и то же, только не забывать очищать глубину перед отрисовкой...
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 16:10   #383
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Вообще не понял как отрендерить модель в EditorWindow с помощью Camera.Render.
Render это не статический метод. Получается камеру брать надо из сцены, а в сцене ее может и не быть.
И даже если вызвать Render у камеры из сцены, то отрендерится вся сцена и все равно не в мое окно(:
(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 17:53   #384
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Всем привет. У кого нибудь нету туториала синхронизации анимации по сети нету? Стандартный пример не подходит т.к. не работает на версии 3.4.
(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 18:29   #385
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Ну или хотя бы дайте намек как это все синхронизировать? Есть 3 вида анимации. Бег вперед, влево, вправо. Если по скорости только то не выйдет. Нажатие клавиши направления отправлять? Или только в зависимости от значения vertical и horizontal (плюс или минус).
(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 19:58   #386
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 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(00, -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(00position.widthposition.height);
            
Handles.SetCamera(rectcam);
            
Handles.DrawCamera(rectcam);
        }
    }


__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
WISHMASTER35 (24.06.2012)
Старый 24.06.2012, 21:40   #387
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

Все бы хорошо, но z тест все равно не работает(: А у тебя работало?
pie, а их надо синхронизировать? Если их везде вовремя включать, то должно быть нормально.
(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 22:39   #388
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 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(00, -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.height24);
            
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(00position.widthposition.height),rt);
            
RenderTexture.ReleaseTemporary(rt);
        }
    }


__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 22:54   #389
pie
ПроЭктировщик
 
Аватар для pie
 
Регистрация: 04.11.2011
Сообщений: 176
Написано 19 полезных сообщений
(для 64 пользователей)
Ответ: Вопросы от новичка

Как узнать изменились ли координаты x и z. Чтобы поставить это в условие. Типо этого:
if (изменились ли координаты x и y)
{


(Offline)
 
Ответить с цитированием
Старый 24.06.2012, 23:41   #390
WISHMASTER35
Бывалый
 
Аватар для WISHMASTER35
 
Регистрация: 21.12.2008
Адрес: UA
Сообщений: 878
Написано 105 полезных сообщений
(для 357 пользователей)
Ответ: Вопросы от новичка

pax, спасибо, но у меня инди.
А нельзя сделать, чтобы когда рисуешь например box'ы, то они не вылазили за границы? А то, если текстура у box'а большая, то box не уменьшается, хотя при ExpandWidth(true) кажется растягивается.
pie, сравнивай с предыдущими координатами.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com