Четверг, 10 Октября 2024, 07:57

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Скриптинг в Unity3D
KiraДата: Среда, 14 Ноября 2012, 23:20 | Сообщение # 1
заслуженный участник
Сейчас нет на сайте
вот пару моих вопросов.
1) Сериализация. Сам процесс мне примерно понятен. Так мы например сохраняем состояние класса в файл. Это по шарпу.
Но что делает эта запись? Что измениться?
[SerializeField]public Rect edOptionsWindow=new Rect(5,5,150,250);

2) Как мне запомнить положение окна в окне редактора.
Code

Переменная размера окошка.
[SerializeField]public Rect edOptionsWindow=new Rect(5,5,150,250);
//Создаю окно редактора.
static void Init ()
  {
   TileSet TileSetWindow = (TileSet)EditorWindow.GetWindow (typeof(TileSet));
  }
void OnGUI{ // так я создал второе окошко.
                 BeginWindows ();
   edOptionsWindow=GUI.Window(1,edOptionsWindow,OptionsWindow,edNameWindow);
   EndWindows ();
void OptionsWindow(int id)
  {
  GUI.DragWindow();    // Окошко может перемещаться
  }
}

Как мне запомнить положение окна edOptionsWindow?
Пробовал сериализацию, но видимо не правильно.

Добавлено (14.11.2012, 23:20)
---------------------------------------------
Как же мне сохранить сериализацию в файл? Сдесь хоть кто нибудь разбирается?



Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
pixeyeДата: Четверг, 15 Ноября 2012, 00:02 | Сообщение # 2
Red Winter Software
Сейчас нет на сайте
//save
// typeof(profile) заменять на то, что сохраняешь.
Code
    public  void Save (string path)
  {
    var serializer = new XmlSerializer (typeof(profile));
    using (var stream = new FileStream(path, FileMode.Create)) {
     serializer.Serialize (stream, this);
     
    }
    Debug.Log ("SAVED");
   }


//load
Code
    public void  Load (string path)
  {    

    
    var serializer = new XmlSerializer (typeof(profile));
    if (checkFile (path)) {
     using (var stream = new FileStream(path, FileMode.Open)) {
      instance = serializer.Deserialize (stream) as profile;
     }
    } else {
     Save (path);
    
    }
     
    
  }


//check
Code
public bool checkFile (string path)
  {
    
   if (File.Exists (path)) {
    return true;
   } else {
    return false;
   }  
  }


ACTORS - мой фреймворк на Unity
Until We Die - игра над которой работаю

KiraДата: Понедельник, 19 Ноября 2012, 03:58 | Сообщение # 3
заслуженный участник
Сейчас нет на сайте
biggrin Это конечно не совсем то, хотя я сам не написал сути. Чего то вчера голова совсем выключилась.

edIndex index=new edIndex();//ScriptableObject.CreateInstance<edIndex>();
//Material index=new Material("vfn");

AssetDatabase.CreateAsset(index, "Assets/ind.aset");

Оказалось вся проблема с глобальными путями, почему еще предстоит выяснить.

Добавлено (18.11.2012, 19:54)
---------------------------------------------
Кто знает как заставить работать привязку к сетке. И как задать ее размерность. Или как заставить работать скрипт в редакторе Scene. У меня он работает во время выделения го или во время вызова. Мне надо постоянно.

Добавлено (19.11.2012, 03:58)
---------------------------------------------
Еще вопросик:
Как отловить координаты мыши в Едиторе Scene?


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
IrondustДата: Вторник, 20 Ноября 2012, 15:48 | Сообщение # 4
участник
Сейчас нет на сайте
Quote (Kira)
Как отловить координаты мыши в Едиторе Scene?

можно делать рэйкаст из камеры в координаты мыши на экране
Code
Camera.ScreenPointToRay(Input.MousePosition);
KiraДата: Вторник, 20 Ноября 2012, 18:30 | Сообщение # 5
заслуженный участник
Сейчас нет на сайте
Irondust, Это работать не будет. Camera и Input доступны будут только при запуске. И об этом я знал.
Вот кому интересно нашел способ:

Code
object hit;
Event e = Event.current;
Ray ray=HandleUtility.GUIPointToWorldRay(e.mousePosition);
hit =  HandleUtility.RaySnap(ray);

hit сработает на колайдере, что снова грабли в мою сторону.
Есть еще способ но криво работает так как Ивент возвращает Vector2:
Event e = Event.current;
Vector3 vec=
SceneView.lastActiveSceneView.camera.ScreenToWorldPoint(e.mousePosition));
по ч вроде норм, а по у происходит смещение вроде на 1.1.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
IrondustДата: Вторник, 20 Ноября 2012, 18:43 | Сообщение # 6
участник
Сейчас нет на сайте
Ты какой-то плагин что ли пилишь для юнити? Зачем тебе это всё в едиторе?
KiraДата: Среда, 21 Ноября 2012, 15:36 | Сообщение # 7
заслуженный участник
Сейчас нет на сайте
Quote (Irondust)
Ты какой-то плагин что ли пилишь для юнити? Зачем тебе это всё в едиторе?

Да, TileMaper.

Добавлено (21.11.2012, 15:36)
---------------------------------------------

Quote (Kira)
Кто знает как заставить работать привязку к сетке. И как задать ее размерность. Или как заставить работать скрипт в редакторе Scene. У меня он работает во время выделения го или во время вызова. Мне надо постоянно.

Вчера разобрался наконец то, и как об этом можно было забыть. Чтоб скрипт работал в Scene нужно добавить атрибут [ExecuteInEditMode] к классу.


Unity3d разработчик на С#. Лучшее спасибо + в репу.
"Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
"Человек, который никогда не ошибался никогда не пробовал ничего нового".
"Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг