удалите тему.

Лучший способ помочь другим, поделиться своими находками.

удалите тему.

Сообщение Gloogerr 30 июл 2013, 23:47

Извиняюсь за засирание форума, но перепишу данную тему от своего профиля, данная тема интересной информации не содержит, её можно удалить. :(
Последний раз редактировалось Gloogerr 02 окт 2013, 19:07, всего редактировалось 9 раз(а).
Аватара пользователя
Gloogerr
UNец
 
Сообщения: 4
Зарегистрирован: 30 июл 2013, 20:31

Re: Areas System GUI

Сообщение Gloogerr 31 июл 2013, 00:11

И сразу вопрос к знатокам! :D

Можно ли без 15 строчек кода передать в объект другого класса ссылку на свой метод? (или отправить самого себя как объект самого себя :D)

Это нужно для создания, например, кнопки. Т.е.

Синтаксис:
Используется csharp
            ASGUI.СreateButton(new Rec(10,10,10,10), //rec кнопки
                               Button1Down())        // метод, вызываемый при нажатии на неё

            void Button1Down()
            {
            ...
            }


И я слышал о делегатах, только не понял систему их работы :(
Аватара пользователя
Gloogerr
UNец
 
Сообщения: 4
Зарегистрирован: 30 июл 2013, 20:31

Re: Areas System GUI

Сообщение Tolking 31 июл 2013, 14:24

:) А ты почитай про делегаты и посмотри примеры...
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Areas System GUI

Сообщение Gloogerr 31 июл 2013, 15:47

Tolking писал(а)::) А ты почитай про делегаты и посмотри примеры...


Ну прежде чем спросить что-то я конечно не брезгую документацией!
Как делегал работает внутри одного класса я понял, это легко, а вот как его передать в другой класс...
т.е. этот "другой класс" должен принять делегат с нужным типом делегата... эмм.. вот пример в общем:

Синтаксис:
Используется csharp
//Class1.cs
using UnityEngine;

public class Class1: MonoBehaviour
{

    public delegate void Del(string message);

    private Class2 cl2 = new Class2();

    void Start()
    {
        Del handler = DelegateMethod;
        cl2.Method(handler);
    }

    public void DelegateMethod(string message)
    {
        print(message);
    }
}


Синтаксис:
Используется csharp
//Class2.cs
using UnityEngine;

public class Class2
{
    public void Method(Del d) // тут ошибка естесьно
    {
        d("Hello World");
    }
}


Я так понял делегаты нужно в отдельный класс вытащить, вот как именно это сделать - не понял ещё :)

Допёр! Просто объявить делегат в отдельном скрипте :D как же всё просто!
Аватара пользователя
Gloogerr
UNец
 
Сообщения: 4
Зарегистрирован: 30 июл 2013, 20:31

Areas System GUI v0.3

Сообщение Glooger 04 авг 2013, 22:35

[V] Обновление Areas System GUI v0.3

Добавлено:
- Добавление кнопок:
--- прямоугольная кнопка;
--- круглая кнопка;
- Добавление объектов с индивидуальной отрисовкой в указанном вами методе (как, например, HPBar в демке).
- Локальная система слоёв (сначала отрисовываются объекты с меньшей depth);

Демка обновлена.
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

Re: Areas System GUI v0.3

Сообщение Tolking 05 авг 2013, 09:48

Немного не то... Есть более удобный способ работы с делегатами.
Отпишись в теме, чтобы я из дома увидел вечером из дома и вспомнил о тебе...
Последний раз редактировалось Tolking 05 авг 2013, 17:15, всего редактировалось 2 раз(а).
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Areas System GUI v0.3

Сообщение Glooger 05 авг 2013, 17:09

Tolking писал(а):Немного не то... Есть более удобный способ работы с делегатами.
Отпишись в теме, чтобы я из дома увидел вечером из дома и вспомнил о тебе...

Читаю в оба глаза :-B
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

Re: Areas System GUI v0.3

Сообщение Tolking 05 авг 2013, 17:15

Вспомнил... Хотя, правда, здесь больше эвентов чем делегатов...

Декларация и обработка
Синтаксис:
Используется csharp
public delegate void OnClick(GUIButton button);
public class GUIButton : GUIElement
{
    public event OnClick OnClick;
 
//Блаблабла
    public override void Render()
    {
//Блаблабла
                if (pressed)
                {
                   pressed = false;
                    if (OnClick != null)        OnClick(this);
                }
    }
       
}


Использование
Синтаксис:
Используется csharp
 public void NewGame(GUIButton btn)
  {
      GUIWindow wnd = gGUI.GetWindow("Title");
      wnd.Visible = false;
      wnd = gGUI.GetWindow("Combat");
      wnd.Visible = true;
      Application.LoadLevel(1);
               
        StartCoroutine(AfterLevelLoad());
  }

// где-то в программе при создании (инициализации) ГУИ
   GUIWindow Title=gGUI.AddWindow("Title",(Texture2D)Resources.Load("GUI/Panels/main"));
   Title.anchor = Anchor.Center;
   GUIButton btn = Title.AddButton((Texture2D)Resources.Load("GUI/Buttons/b_newgame"),GUIButtonType.Origin,"NewGame");

//Вот оно!!!
        btn.OnClick += new OnClick(this.NewGame);
        btn.Pos.x=800;
        btn.Pos.y=504;

 
Ковчег построил любитель, профессионалы построили Титаник.
Аватара пользователя
Tolking
Адепт
 
Сообщения: 2716
Зарегистрирован: 08 июн 2009, 18:22
Откуда: Тула

Re: Areas System GUI v0.3

Сообщение Glooger 06 авг 2013, 08:20

Спасибо, хотя с кнопками я делегатов не использовал... только для отрисовки "особых" элементов gui
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

Re: Areas System GUI v0.4

Сообщение Glooger 01 сен 2013, 16:05

[V] Обновление Areas System GUI v0.4

Переписал почти весь код. Сейчас почти всё через static.

Добавлено:
- Объединение полей в группы:
--- Запоминание enable переменных в данный момент и последующим использование. (например, отключить одной командой половину полей группы)

- Плавное перемещение:
--- перемещение одиночных полей и их объектов:
--- перемещение группы полей;

- Система инвенторя:
Поля с ячейками имеют объект класса хранения данных данных о предметах и их количестве (itemPack).
Все манипуляции с предметами проходят через класс AreaItemPackController, свободно меняя содержимое методов которого можно заточить его под любую систему инвенторя.
(в архиве простой пример системы инвенторя из 2х предметов)

Демка обновлена.
Продолжение следует... :ymsmug:
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

Re: Areas System GUI v0.4

Сообщение Woolf 01 сен 2013, 17:58

Ну, неплохо. Только вот такой небольшой тактический прием - когда вы берете объект чуть увеличивайте картинку, на 10-15%. Создается эффект, будто вы действительно её приподняли.
Подсмотрено у близарда )


Переписал почти весь код. Сейчас почти всё через static

Плохо переписали. Static лучше вообще не использовать, а если используете, то с крайней осторожностью. Смотрите лучше в сторону синглтонов.
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Areas System GUI v0.4

Сообщение Diab10 01 сен 2013, 19:07

Woolf писал(а):Ну, неплохо. Только вот такой небольшой тактический прием - когда вы берете объект чуть увеличивайте картинку, на 10-15%. Создается эффект, будто вы действительно её приподняли.
Подсмотрено у близарда )


Так ведь сейчас итак увеличивается, или я не то понял?)
Правда увеличивается не плавно, лерп бы добавить
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Areas System GUI v0.4

Сообщение Glooger 02 сен 2013, 10:30

Woolf писал(а):Ну, неплохо. Только вот такой небольшой тактический прием - когда вы берете объект чуть увеличивайте картинку, на 10-15%. Создается эффект, будто вы действительно её приподняли.
Подсмотрено у близарда )


Переписал почти весь код. Сейчас почти всё через static

Плохо переписали. Static лучше вообще не использовать, а если используете, то с крайней осторожностью. Смотрите лучше в сторону синглтонов.


Спасибо за наводку, не знал о синглтонах, но это как минимум решит проблему с наследованием. Препешу :D
А по увеличению, оно есть) я его сделал плавным, но забыл о корректировке на фпс, поэтому в веб-плеере выглядело убого (исправил)
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

Re: Areas System GUI v0.5

Сообщение Glooger 08 сен 2013, 18:28

[V] Обновление Areas System GUI v0.5

- Система инвентаря:
--- Манипуляции с предметами мышкой (Взять пол стака, скинуть из стака 1 предмет...);
--- Всплывающее окошко информации о предмете (отрисовка через гуи скин);

Демка обновлена.

В планах сделать отрисовку полей и кнопок тоже через Скины. Сделать "Клетчетое поле" со скролом.
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

Re: Areas System GUI v0.4

Сообщение Glooger 09 сен 2013, 07:49

Woolf писал(а):...Static лучше вообще не использовать, а если используете, то с крайней осторожностью. Смотрите лучше в сторону синглтонов.


А в чем опасность статиков? Часто это самый удобный вариант.
Аватара пользователя
Glooger
UNIт
 
Сообщения: 118
Зарегистрирован: 04 апр 2013, 08:40

След.

Вернуться в Исходники (Копилка)

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4