forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

WISHMASTER35 26.01.2013 16:20

Ответ: Вопросы от новичка
 
Почитал про PropertyDrawer.
Классно. Интересно, что можно помечать переменные своим атрибутом и создать для своего атрибута этот PropertyDrawer. Как в примере с RangeAttribute.
Но вот чего я не понял, это почему все рисуется через EditorGUI, а не EditorGUILayout! Если я правильно понял, то рисовать можно только в одну строку. Сильно не разгонишься!!!!!!!!!!!!!!!!!!!

seaman,
Цитата:

Не этим. Я же написал - TextureImporter
Это я ссылку перепутал))

Опять про AssetPostprocessor.
seaman, в твоем примере шрифт грузится просто в статическую ссылку?
Юнити шрифт и другие поддерживаемые форматы в инспекторе отображается как обычный ассет, что очень удобно. Да и в билд сам файл шрифта думаю не попадает, а остается ассет созданный из данных шрифта.

seaman 26.01.2013 17:04

Ответ: Вопросы от новичка
 
Цитата:

в твоем примере шрифт грузится просто в статическую ссылку?
У меня шрифт не ttf, а атлас типа:

Он создается в спецпрограмме, которая кроме такого атласа создает описание его - список литер с координатами и еще некоторыми параметрами. Вот это описание я и гружу. В описании есть имя текстуры атласа. Так что при парсине можно привязать такой битмапфонт к текстуре. После загрузки создается структура с описанием фонта и внутри с описанием каждой литеры. Эта структура сохраняется (либо в файл своего формата в папку Resources, либо вообще в базу данных - по необходимости). Рантайм по описанию создается текстура с нужным текстом. Текстура накладывается куда нужно.

WISHMASTER35 26.01.2013 17:14

Ответ: Вопросы от новичка
 
Я когда-то тоже делал свой шрифт. Сделал ScriptableObject и сделал для него инспектор в котором была кнопочка импорта моего формата. Т.е. нажимал эту кнопочку, выбирал мой файл и его данные грузились в мой ассет, после чего файл можно было даже удалить) Хотя в билд он и не должен был попадать т.к. ссылок на него нету. Не очень удобно, но работало.

Я имел ввиду куда твой FontImport.ImportFont сохраняет загруженные данные? Просто в статическую ссылку? Или GO со шрифтом в сцене создает?
[UPDATE]
Подожди, OnPostprocessAllAssets вызывается в редакторе, а не на старте сцены?

seaman 26.01.2013 17:40

Ответ: Вопросы от новичка
 
Есть:
Код:

static public class CustomFonts
{
    private static readonly ChrDesc _nullChar = new ChrDesc(' ', new Rect(0,0,0,0), new Point(0,0), 0);
    public static void AddChangeFont(CustomFont cf)
    {

Там производится сохранение добавляемого/меняемого шрифта (CustomFont). FontImport.ImportFont после парсинга просто вызывает AddChangeFont, передавая ему только что созданный фонт.
Рантайм читаем сохраненный CustomFont и передаем его в
Код:

static public class CreateGo
{
    static public GameObject GoFromText(string text, CustomFont font, int lineSpacing, QuadInfo info, Camera guicam)
    {

Он создает GameObject. Меш - плейник, текстура материала создается из текста string text в самом CustomFont есть:
Код:

    public static Texture2D CreateTextToTexture(string text, Point textPos, Size textureSize, float scale, int lineSpacing)
    {

Соответственно можно не создавать ГО, а просто создать нужную текстуру и наложить ее на любой обхект

WISHMASTER35 26.01.2013 23:54

Ответ: Вопросы от новичка
 
Сейчас заметил, что если сделать редактор для TextAsset, то он полностью неактивен т.к. кнопки не жмутся, текст не вводится и весь он как белой пеленой покрыт.
Это так и должно быть? Что-то раньше не замечал.
И я так понял в редакторе TextAsset нельзя изменить?

seaman 27.01.2013 00:22

Ответ: Вопросы от новичка
 
Цитата:

Подожди, OnPostprocessAllAssets вызывается в редакторе, а не на старте сцены?
Конечно. Когда суешь в проект какой-то файл,- Юнити пытается его импортировать. По окончании импорта и вызывается OnPostprocessAllAssets. В него передается ссылка на файлы, которые Юнити импортировала.

WISHMASTER35 27.01.2013 00:59

Ответ: Вопросы от новичка
 
Кстати, свою сериализацию можно сделать с помощью BinaryFormatter, который хорошо работает с полиморфизмом. А полученный массив байт сохранит уже сериализатор юнити. Только загружать\сохранять придется вручную.
Код:

        public static T Load<T>(byte[] data) {
                MemoryStream stream = new MemoryStream(data);
                BinaryFormatter bf = new BinaryFormatter();
                T obj = (T)bf.Deserialize(stream);
                stream.Close();
                return obj;
        }
       
        public static byte[] Save(object obj) {
                MemoryStream stream = new MemoryStream();
                BinaryFormatter bf = new BinaryFormatter();
                bf.Serialize(stream, obj);
                byte[] data = stream.ToArray();
                stream.Close();
                return data;
        }

А вот XmlSerializer плохо работает с полиморфизмом( А хотелось сделать свой читабельный xml формат.

Но может и к лучшему) Наверно лучше создавать свой формат, а не пользоваться сериализаторами. Буду теперь свой xml формат придумывать и писать для него import/export:)

Только не пойму TextAsset редактировать вообще нельзя?

seaman 27.01.2013 01:01

Ответ: Вопросы от новичка
 
Цитата:

Только не пойму TextAsset редактировать вообще нельзя?
Вспомнил я, что Pax говорил, что делал это для Антарес. Полез в него. Откопал. Делаем так:
Код:

[CustomEditor(typeof(TextAsset))]
public class GobInspector : Editor
{
    public override void OnInspectorGUI()
    {
        GUI.enabled = true;
            GUILayout.Label("This is a Label in a Custom Editor");
            if(GUILayout.Button("Probe")) Debug.Log("PROBE");
        }
}


LLI.T.A.L.K.E.R. 27.01.2013 01:05

Ответ: Вопросы от новичка
 
Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 33 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

WISHMASTER35 27.01.2013 01:14

Ответ: Вопросы от новичка
 
seaman, так и знал, что gui где-то должно отключаться, но забыл где)
LLI.T.A.L.K.E.R., тут делают игры, а не ломают их.
Кстати, конечно сцена там простая, но я сначала подумал, что то реальные фото)

LLI.T.A.L.K.E.R. 27.01.2013 01:33

Ответ: Вопросы от новичка
 
Написал ему на почту, либо если его знаете - сообщите.
Просто, только второй раз пользуюсь отправкой электронного письма.

seaman 27.01.2013 01:34

Ответ: Вопросы от новичка
 
LLI.T.A.L.K.E.R Из вебсборки выдрать ресурсы достаточно легко. Из стендэлон нет. Если невмоготу - 3dripper в руки - и работать. Но вообще то такое и новичок может сам сделать. Ни моделек ни текстур крутых я там не увидел.

LLI.T.A.L.K.E.R. 27.01.2013 01:45

Ответ: Вопросы от новичка
 
seaman
http://www.playnoread.com/game_zarulem.php
я хочу быстренько сделать игру - с ресурсами туго.
просто увидел видео обзор на неё, а в ней физики нет вообще

http://gamejolt.com/data/games/10779...Player.unity3d

seaman 27.01.2013 02:16

Ответ: Вопросы от новичка
 
Машинка
Уверен, что это Вам не поможет. Быстренько только кошки родятся.
Хотя сделать такую машинку нужно где-то полчаса работы.

pax 27.01.2013 09:52

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 250816)
А вот XmlSerializer плохо работает с полиморфизмом( А хотелось сделать свой читабельный xml формат.

Прочитай полностью, особенно третий пост


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

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