Скриптинг в 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 |
заслуженный участник
Сейчас нет на сайте
| Это конечно не совсем то, хотя я сам не написал сути. Чего то вчера голова совсем выключилась.
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 разработчик на С#. Лучшее спасибо + в репу. "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов". "Человек, который никогда не ошибался никогда не пробовал ничего нового". "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
|
|
| |