https://www.youtube.com/watch?v=ic2tGGQrq1c

 

 

소개

객체지향의 기본

게임에서 다양한 아이템, 몬스터 등 
객체를 만들 때 적합

포장한 후 서로 교환 가능하게 함
이게 원리

 

+

 

상새

코드를 분해해 보면
1. 로봇이 있다
2. 걷기를 / 날기를 / 달리기를
3. 동작을 시행한다

 

 

 

1. 시작

초기 작업

 

 

2. 중간

교체 가능한 케이스 들을 나열 함

 

 

3. 끝

실행하는 클래스 

 

 

 

 

참고

 

여기서는 스크립터블 오브젝트를 예로 들지만 

씨샵 스크립트도 예시가 될 수 있다 함

 

 


연관 코드 지식

 

상속 

MonoBehaviour 넣을 자리에 부모 class 이름 넣음

public class Enemy : Unit { } 

public class 자식 : 부모

부모에선 virtual 을 쓴다
자식에선 override 를 쓴다

virtual 키워드는 이 메서드는 자식 클래스에서 내용을 덮어쓰거나(Override) 확장할 수 있도록 허용한다

 

 

+

 

참고로 여기선 i 인터페이스는 안 씀

i 인터페이스를 쓰기 애매함

i 인터페이스는 완전 빈 껍데기 이기 때문



+

 

 

공통점도 있고 차이점도 가지고 있는 여러가지를 다룰 때는

예로 들어,

아군 스킬 시스템을 짤 때는

 


if else 는 쓰지 마라

switch case 도 쓰지 마라

코드 수정을 많이 해야 하기 때문이다

 



+

 

if else 써야 할 때 if else 쓰지 말 아야 할 때
같은 class 내에 통으로 해결 class 를 따로 분리함
   
코드길이 3줄 내로 짧음 분기가 많을 때
안 바뀔 때 수정 및 확장 가능성 있을 때
   

 

논리 짤 때 컨텐츠 다룰 때
   

 

if else 써야 할 때 if else 쓰지 말 아야 할 때
체력 최대 한도 체크
현재 체력이 맥스 체력 보다 클 때
적 ai 패턴
돌격형, 수비형, 회복형 
애니메이터 연결
isRun bool 값 체크
승리 조건
특정 타일에 도달, 20턴 버티기, 적 전멸 
null 체크  무기 스킨 선택
   

 

 

 

+

 

 

strategy 패턴은 복잡한 다중선택지 구조 라고 보면 됨

 

if 문의 업글 버전임

 

 

+

 

 

 

유니티 내에선

Render Feature 가 strategy 패턴 쓴 예시 임

 

 

Add Renderer Feature 뜻
여러 화면 효과를 의미함


외곽선 효과 (Outline)

스크린 공간 앰비언트 오클루전 (SSAO)
그림자가 닿지 않는 곳에 미세한 음영 추가

디더링 효과 적용 (Dither)

 

 

+

 

반응형
Posted by 이름이 익명
: