{"id":19905123,"url":"https://github.com/solutena/behavior-pattern","last_synced_at":"2026-05-13T17:40:30.167Z","repository":{"id":150488477,"uuid":"573370929","full_name":"solutena/Behavior-Pattern","owner":"solutena","description":null,"archived":false,"fork":false,"pushed_at":"2024-06-16T15:24:25.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-11T21:40:58.307Z","etag":null,"topics":["behavior","design-pattern","unity"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/solutena.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-02T09:57:31.000Z","updated_at":"2024-06-16T15:24:28.000Z","dependencies_parsed_at":"2024-11-12T20:33:02.597Z","dependency_job_id":"6b9e631d-e051-420f-8de4-20b08bdbcf3b","html_url":"https://github.com/solutena/Behavior-Pattern","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solutena%2FBehavior-Pattern","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solutena%2FBehavior-Pattern/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solutena%2FBehavior-Pattern/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/solutena%2FBehavior-Pattern/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/solutena","download_url":"https://codeload.github.com/solutena/Behavior-Pattern/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241333905,"owners_count":19945893,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["behavior","design-pattern","unity"],"created_at":"2024-11-12T20:31:31.720Z","updated_at":"2026-05-13T17:40:30.140Z","avatar_url":"https://github.com/solutena.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Behaviour Pattern\n\n아이템, 몬스터, 캐릭터 등 다양한 고유 효과를 구현하기 위한 디자인 패턴입니다.\n\n`Behaviour\u003cT\u003e` 클래스를 상속하며\n\n키를 통해 클래스를 가져올 수 있고, 클래스 이름이 키가 됩니다.\n\n클래스는 처음으로 가져올 때 생성합니다.\n\n## 예제\n```\npublic enum ItemGrade\n{\n  None,\n  Normal,\n  Rare,\n  Unique,\n  Legendary,\n  Myth,\n}\n\npublic enum ItemType\n{\n  None,\n  Weapon,\n  Armor\n}\n\npublic abstract class ItemBehaviour : Behaviour\u003cItemBehaviour\u003e\n{\n  public abstract ItemGrade ItemGrade { get; }\n  public abstract ItemType ItemType { get; }\n\n  public abstract void OnUse();\n  public virtual void OnGet() { }\n  \n  public string Name =\u003e Key\n}\n```\n\n반드시 설정해야 하는 멤버는 `abstract` 으로 구현합니다.\n\n설정하지 않아도 되거나 기본값을 지정할 멤버는 `virual` 로 구현합니다.\n\n변경되지 않을 멤버는 키워드 없이 구현합니다.\n\n```\npublic class Item_Sword : ItemBehaviour\n{\n  public override ItemGrade ItemGrade { get; } = ItemGrade.Normal;\n  public override ItemType ItemType { get; } = ItemType.Weapon;\n\n  public override void OnUse()\n  {\n    //사용 시 효과\n  }\n  \n  public override void OnGet()\n  {\n    //획득 시 효과\n  }\n}\n```\n```\nvoid Start()\n{\n  ItemBehaviour Sword = ItemBehaviour.Get\u003cItem_Sword\u003e();\n}\n```\n\n예제의 아이템은 `ItemBehaviour.Get\u003cT\u003e()` 함수로 가져올 수 있습니다.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolutena%2Fbehavior-pattern","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsolutena%2Fbehavior-pattern","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsolutena%2Fbehavior-pattern/lists"}