1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/Mogoson-MGS.DesignPattern

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

MGS.DesignPattern

Summary

  • Код шаблона проектирования для разработки проекта на C#.
  • Код шаблона проектирования для разработки проекта Unity.

Среда

  • Unity 5.0 или выше.
  • .Net Framework 3.5 или выше.

Платформа

  • Windows.

Требования

  • Предоставить единственный экземпляр указанного типа T.
  • Общий пул игровых объектов.

Использование

Пул объектов

  • ObjectPoolPro
// Реализовать пользовательский объект.
public class CustomObject : IResettable
{
    public void Reset()
    {
        //TODO: сбросить объект.
    }

    public void Dispose()
    {
        //TODO: удалить объект.
    }
}

// Использовать ObjectPoolPro в своём классе.
public class TestCase
{
    public TestCase()
    {
        // Создать пул для CustomObject.
        var pool = new ObjectPoolPro<CustomObject>();

        // Взять экземпляр CustomObject из пула.
        var obj = pool.Take();

        // Вернуть объект в пул, если он больше не нужен.
        pool.Recycle(obj);
    }
}
  • GameObjectPool
    • Создать пул игровых объектов.
    // Префаб как шаблон многоразового игрового объекта.
    var pool = GameObjectPoolManager.Instance.CreatePool(poolName, prefab);
    • Использовать пул для взятия и возврата игровых объектов.
    // Использовать имя пула, чтобы найти экземпляр пула у менеджера, если мы его не держим.
    var pool = GameObjectPoolManager.Instance.FindPool(poolName);
    
    // Взять игровой объект, такой же, как префаб.
    var go = pool.Take();
    
    // Вернуть игровой объект в пул, если он больше не нужен.
    pool.Recycle(go);
    
    // Взять игровой объект и получить или добавить компонент.
    var cpnt = pool.Take<Bullet>();
    
    // Вернуть игровой объект компонента в пул, если он больше не нужен.
    pool.Recycle(cpnt);

Синглтон

  • Синглтон
// Пользовательский класс с единственным экземпляром.
public sealed class TestSingleton : Singleton<TestSingleton>
{
    public string testField = "Test Field";

    // Закрытый конструктор без параметров для обеспечения синглтона.
    private TestSingleton() { }
}

// Используйте Instance для доступа к полям, свойствам и методам.
var testInfo = TestSingleton.Instance.testField;


// Пользовательский класс с единственным экземпляром и потоком управления.
public sealed class TestSingleCruiser : SingleCruiser<TestSingleCruser>
{
    // Закрытый конструктор без параметров для обеспечения синглтона.
    private TestSingleUpdater() { }

    protected override void Cruise()
    {
        // TODO: сделать что-то.
    }
}
  • Один компонент
// Предоставляет автоматически создаваемый, ленивый и потокобезопасный единственный экземпляр компонента T;
// Указанный компонент T должен иметь модификатор доступа sealed для обеспечения синглтона.
// Не добавляйте компонент T ни к одному игровому объекту самостоятельно.
public sealed class UIManager : SingleComponent<UIManager>
{
    public RectTransfrom FindUI(string name)
    {
        // TODO:
    }
}

// Используйте Instance для доступа к полям, свойствам и методам.
var helpUI = UIManager.Instance.FindUI("UI_Help");
  • Одно поведение
// Используйте свойства и методы, наследуемые от MonoBehaviour.
SingleBehaviour.Instance.StartCoroutine(coroutine);

// Используйте расширенные события.
SingleBehaviour.Instance.OnApplicationQuitEvent += () =>
{
    // TODO:
};

Демо

  • Демоверсии в пути «MGS.Packages/DesignPattern/Demo/» предоставляют вам ссылку.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Design pattern code for Unity project develop. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (1)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/Mogoson-MGS.DesignPattern.git
git@api.gitlife.ru:oschina-mirror/Mogoson-MGS.DesignPattern.git
oschina-mirror
Mogoson-MGS.DesignPattern
Mogoson-MGS.DesignPattern
master