Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/solutena/behavior-pattern


https://github.com/solutena/behavior-pattern

behavior design-pattern unity

Last synced: 4 days ago
JSON representation

Awesome Lists containing this project

README

        

# Behaviour Pattern

아이템, 몬스터, 캐릭터 등 다양한 고유 효과를 구현하기 위한 디자인 패턴입니다.

`Behaviour` 클래스를 상속하며

키를 통해 클래스를 가져올 수 있고, 클래스 이름이 키가 됩니다.

클래스는 처음으로 가져올 때 생성합니다.

## 예제
```
public enum ItemGrade
{
None,
Normal,
Rare,
Unique,
Legendary,
Myth,
}

public enum ItemType
{
None,
Weapon,
Armor
}

public abstract class ItemBehaviour : Behaviour
{
public abstract ItemGrade ItemGrade { get; }
public abstract ItemType ItemType { get; }

public abstract void OnUse();
public virtual void OnGet() { }

public string Name => Key
}
```

반드시 설정해야 하는 멤버는 `abstract` 으로 구현합니다.

설정하지 않아도 되거나 기본값을 지정할 멤버는 `virual` 로 구현합니다.

변경되지 않을 멤버는 키워드 없이 구현합니다.

```
public class Item_Sword : ItemBehaviour
{
public override ItemGrade ItemGrade { get; } = ItemGrade.Normal;
public override ItemType ItemType { get; } = ItemType.Weapon;

public override void OnUse()
{
//사용 시 효과
}

public override void OnGet()
{
//획득 시 효과
}
}
```
```
void Start()
{
ItemBehaviour Sword = ItemBehaviour.Get();
}
```

예제의 아이템은 `ItemBehaviour.Get()` 함수로 가져올 수 있습니다.