나날이스튜디오 블로그
-
SendMessage로 FSM 구현해보기 (Unity3D)
SendMessage로 FSM 구현해보기 (Unity3D)
# Introduce FSM을 구현하기 위해 State Pattern을 다뤄보던 중, SendMessage를 이용하여 기존 사용하던 FSM을 더 가독성 좋게 구현하게 되어서 공유하려 합니다. FSM? FSM 은 유한 상태 기계(Finite State Machine)를 의미합니다. 유한 상태 기계는 말 그대로 유한한 수의 상태를 가진 기계를 이야기 하는데요. 다음과 같은 특징을 지닙니다. 유한 상태 기계는 유한한 수의 상태들을 가진다. 그 중 반드시 하나의 상태만 취한다. 현재 상태는 특정 조건이 되면 다른 상태로 변할 수 있다. 유한 상태 기계는 가능한 상태들의 집합과 각 상태들의 전이 조건으로 정의될 수 있다. 상태들을 그래프로 표현이 가능하다. # Pros & Cons 장점 - 구현이 간단하다. - .. -
Command Pattern
Command Pattern
# Introduce 오늘 소개드릴 디자인 패턴은 커맨드 패턴입니다. 커맨드 패턴은 실행될 기능을 캡슐화하여 재사용에 용이한 클래스를 구현하는 것을 말합니다. 어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하려면 그 객체(B)를 참조하고 있어야 하는 의존성이 발생합니다. 그러나 커맨드 패턴을 적용하면 의존성을 제거할 수 있습니다. # Pros & Cons 장점 1. 작업을 요청하는 클래스(Invoker)와 실제로 작업을 수행하는 클래스(Receiver) 사이의 의존성이 사라집니다. 2. 기존 코드를 수정하지 않고 새로운 커맨드 및 기능을 쉽게 추가할 수 있습니다. 3. 커맨드 패턴을 통해 확장성이 높아질 수 있습니다. 단점 1. 모든 작업이 독립적인 ConcreteCommand 클래스이므로 구현 및 .. -
플랫폼별 사전등록 보상 지급하기 (Unity3D)
플랫폼별 사전등록 보상 지급하기 (Unity3D)
# Introduce 사전등록이란 등록된 앱이 프로덕션으로 제출되기 이전에 '정식 출시되면 다운로드를 하겠습니다.' 하고 예약하는 기능을 의미합니다. 출시 이전에 미리 다운로드를 예약 할 수 있다는 점에서 모바일 생명주기에 가장 중요하다고 볼 수 있는 초반 일주일에 대한 유저 유입량을 보다 더 효과적으로 확보 할 수 있는 방법입니다. 위와 같은 이유만으로도 사전등록은 충분한 강점을 가지고 있지만, 우리는 추가적으로 소정의 상품을 내걸음으로써 훨씬 더 매력적인 사전등록의 의미를 만들어 낼 수 있습니다. 오늘은 이러한 사전등록 보상을 구현하는 방법에 대한 내용을 공유하려 합니다. 다음의 내용은 UnityIAP를 사용함에 있어 이해가 충분하다 가정하고 제작되었습니다. # For example 1. 안드로이드와.. -
Singleton
Singleton
# Introduce 오늘 소개드릴 디자인 패턴은 싱글턴 패턴입니다. 싱글턴 패턴은 언제 어디서나 손쉽게 접근하고 제어할 수 있다는 장점 덕분에 널리 쓰이고 있습니다. 하지만 그만큼 한계도 뚜렷하기 때문에 장,단점을 명확히 이해한 후에 사용해야 합니다. 싱글턴 패턴이란 하나의 인스턴스만 존재하며 전역적으로 접근 가능한 클래스 디자인 패턴입니다. 일반적으로 언제 어디서나 접근 가능한 변수나 함수를 제공하는 매니저 타입의 클래스(GameManager, AudioManager 등)에 사용하면 유용합니다. # Pros & Cons 장점 1. 전역적으로 접근 가능하기에 해당 클래스를 매번 생성, 검색할 필요가 없으며 따라서 레퍼런스를 저장해놓을 필요도 없습니다. 2. 여러 씬에 걸쳐서 사용되는 데이터를 저장하기에.. -
나날이스튜디오 합정 이사!
나날이스튜디오 합정 이사!
나날이스튜디오 합정 시대 개막! 이사 .. 한지는 좀 됐다. 무려 3개월 전인 6월 나날이 스튜디오가 상암동에서 합정 서교동으로 이사를 하였다. 상암동 사무실 계약기간이 올해 7월까지였기 때문에 3월부터 사무실을 탐색하기 시작했다. 사무실의 탐색 기준은 아래와 같았다. 지역 : 합정/홍대/망원 위치 : 지하철역에서 10분 내외 거리 예산 : 보증금 3000만 원 내외 / 임대료 300만 원 내외 사이즈 : 40평 이상 화장실 : 남/여 구분 되어 있을 것 인테리어 : 최소화 할 수 있는 깔끔한 공간 위 조건하에 약 2개월 동안 30여 곳의 매물을 살핀 결과, 평수는 조금 아쉽지만 맘에 드는 공간을 찾아냈다! 짜잔~! 인테리어가 전혀 안되어 있던 사무실의 모습 내 구상과 비슷하게 공간들이 나눠져 있었고 창..
What we do now
-
Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource
Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource
2020.08.11# Introduce Unity 메소드를 활용해 슬로우 모션(Slow Motion)효과를 적용해봅시다. > Time.timeScale > Time.fixedDeltaTime > Time.unscaledDeltaTime > Audio Source Pitch > Fade Effect > Delegate # For example 1. Time.timeScale (시간 조절) Time.timeScale은 시간이 경과하는 크기를 나타냅니다. 해당 값을 수정하여 시간이 흐르는 속도(배율)를 조절할 수 있습니다. using UnityEngine; public class SlowMationClass : MonoBehaviour { public float slowFactor = 0.05f; public void DoSl.. -
Conditional Attribute
Conditional Attribute
2020.07.31# Introduce c#에서 사용이 가능한 조건부 컴파일 기호입니다. 정의되지 않은 기호가 사용된 메서드의 호출이나 특성이 무시됩니다. 가시적으로는 전처리기 지시문과 동일하게 보여지지만 메서드단위의 관리가 가능하다는 점과, 정의되지 않은 기호에 대하여 호출이 무시된다는 점에서 더 좋은 성능을 기대 할 수 있어 소개하게 되었습니다. # For example MS 공식 설명서에 구현되어있는 예제를 유니티 C#에서 재구성한 모습입니다. 2개의 메서드에 할당된 기호들이 모두 정의되어 있기 때문에 정상적으로 실행되어 아래와 같이 모든 메세지가 출력되게 됩니다. 다음과 같이 CONDITION1 기호 정의가 없는 상황인 경우, 해당 메서드에 대한 실행부에서의 호출이 무시되는것이 때문에 Method1(3); 부분을 .. -
플랫폼별 사전등록 보상 지급하기 (Unity3D)
플랫폼별 사전등록 보상 지급하기 (Unity3D)
2022.01.18# Introduce 사전등록이란 등록된 앱이 프로덕션으로 제출되기 이전에 '정식 출시되면 다운로드를 하겠습니다.' 하고 예약하는 기능을 의미합니다. 출시 이전에 미리 다운로드를 예약 할 수 있다는 점에서 모바일 생명주기에 가장 중요하다고 볼 수 있는 초반 일주일에 대한 유저 유입량을 보다 더 효과적으로 확보 할 수 있는 방법입니다. 위와 같은 이유만으로도 사전등록은 충분한 강점을 가지고 있지만, 우리는 추가적으로 소정의 상품을 내걸음으로써 훨씬 더 매력적인 사전등록의 의미를 만들어 낼 수 있습니다. 오늘은 이러한 사전등록 보상을 구현하는 방법에 대한 내용을 공유하려 합니다. 다음의 내용은 UnityIAP를 사용함에 있어 이해가 충분하다 가정하고 제작되었습니다. # For example 1. 안드로이드와.. -
Command Pattern
Command Pattern
2022.01.24# Introduce 오늘 소개드릴 디자인 패턴은 커맨드 패턴입니다. 커맨드 패턴은 실행될 기능을 캡슐화하여 재사용에 용이한 클래스를 구현하는 것을 말합니다. 어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하려면 그 객체(B)를 참조하고 있어야 하는 의존성이 발생합니다. 그러나 커맨드 패턴을 적용하면 의존성을 제거할 수 있습니다. # Pros & Cons 장점 1. 작업을 요청하는 클래스(Invoker)와 실제로 작업을 수행하는 클래스(Receiver) 사이의 의존성이 사라집니다. 2. 기존 코드를 수정하지 않고 새로운 커맨드 및 기능을 쉽게 추가할 수 있습니다. 3. 커맨드 패턴을 통해 확장성이 높아질 수 있습니다. 단점 1. 모든 작업이 독립적인 ConcreteCommand 클래스이므로 구현 및 .. -
나날이스튜디오 팀 블로그 소개
나날이스튜디오 팀 블로그 소개
2020.06.02회사 설립 때부터 이어져 오던 네이버 블로그를 떠나 새로 개설한 2020 나날이 NEW 팀블로그 입니다! 나날이스튜디오의 작품, 아트/테크 노하우, 일상 모습을 꾸준히 기록할테니까 많이 지켜봐 주세요! 문의/연락처 : manager@nanali.net 홈페이지 : http://www.nanali.net/ 팀블로그 : https://nanalistudios.tistory.com/ (구)블로그 : https://blog.naver.com/nanalistudio 유튜브 : https://www.youtube.com/user/NanaliStudios 페이스북 : https://www.facebook.com/nanalistudiosKR/ 인스타그램 : https://www.instagram.com/nanalist.. -
2020 언택트 종무식 & 송년회
2020 언택트 종무식 & 송년회
2021.01.152020년 참 많은 일들이 있었다. 올해 초 여러 가지를 계획했지만 코로나라는 변수와 함께 많은 계획이 어그러졌고 쉽지 않은 한해를 보낸 것 같다. 그래도 시간은 멈추지 않고 흘렀고 올해 종무식은 언택트로 진행하게 되었다. ZOOM 종무식 1년을 회고하는 발표와 간단한 퀴즈, 게임을 진행했다. 그리고 올해도 진행된 시상식 팀원들의 직접 투표로 올해의 발전, 올해의 신인, 올해의 피플 수상자가 결정되었다. 무사히 종무식을 마치고 저녁에 이어진 송년회 2부 시작~ 참여한 팀원들에게 치킨을 주문해드리고 음료는 각자 준비, ZOOM 송년파티를 진행 했다. 수다도 떨고 어몽 어스(Among Us)도 함께 플레이하며 즐거운 파티! 비록 같은 공간에 함께 이야기를 나눌 순 없었지만 온라인상으로나마 얼굴을 맞대고 시간..
Tech
-
SendMessage로 FSM 구현해보기 (Unity3D)
SendMessage로 FSM 구현해보기 (Unity3D)
2022.01.27# Introduce FSM을 구현하기 위해 State Pattern을 다뤄보던 중, SendMessage를 이용하여 기존 사용하던 FSM을 더 가독성 좋게 구현하게 되어서 공유하려 합니다. FSM? FSM 은 유한 상태 기계(Finite State Machine)를 의미합니다. 유한 상태 기계는 말 그대로 유한한 수의 상태를 가진 기계를 이야기 하는데요. 다음과 같은 특징을 지닙니다. 유한 상태 기계는 유한한 수의 상태들을 가진다. 그 중 반드시 하나의 상태만 취한다. 현재 상태는 특정 조건이 되면 다른 상태로 변할 수 있다. 유한 상태 기계는 가능한 상태들의 집합과 각 상태들의 전이 조건으로 정의될 수 있다. 상태들을 그래프로 표현이 가능하다. # Pros & Cons 장점 - 구현이 간단하다. - .. -
Command Pattern
Command Pattern
2022.01.24# Introduce 오늘 소개드릴 디자인 패턴은 커맨드 패턴입니다. 커맨드 패턴은 실행될 기능을 캡슐화하여 재사용에 용이한 클래스를 구현하는 것을 말합니다. 어떤 객체(A)에서 다른 객체(B)의 메서드를 실행하려면 그 객체(B)를 참조하고 있어야 하는 의존성이 발생합니다. 그러나 커맨드 패턴을 적용하면 의존성을 제거할 수 있습니다. # Pros & Cons 장점 1. 작업을 요청하는 클래스(Invoker)와 실제로 작업을 수행하는 클래스(Receiver) 사이의 의존성이 사라집니다. 2. 기존 코드를 수정하지 않고 새로운 커맨드 및 기능을 쉽게 추가할 수 있습니다. 3. 커맨드 패턴을 통해 확장성이 높아질 수 있습니다. 단점 1. 모든 작업이 독립적인 ConcreteCommand 클래스이므로 구현 및 .. -
플랫폼별 사전등록 보상 지급하기 (Unity3D)
플랫폼별 사전등록 보상 지급하기 (Unity3D)
2022.01.18# Introduce 사전등록이란 등록된 앱이 프로덕션으로 제출되기 이전에 '정식 출시되면 다운로드를 하겠습니다.' 하고 예약하는 기능을 의미합니다. 출시 이전에 미리 다운로드를 예약 할 수 있다는 점에서 모바일 생명주기에 가장 중요하다고 볼 수 있는 초반 일주일에 대한 유저 유입량을 보다 더 효과적으로 확보 할 수 있는 방법입니다. 위와 같은 이유만으로도 사전등록은 충분한 강점을 가지고 있지만, 우리는 추가적으로 소정의 상품을 내걸음으로써 훨씬 더 매력적인 사전등록의 의미를 만들어 낼 수 있습니다. 오늘은 이러한 사전등록 보상을 구현하는 방법에 대한 내용을 공유하려 합니다. 다음의 내용은 UnityIAP를 사용함에 있어 이해가 충분하다 가정하고 제작되었습니다. # For example 1. 안드로이드와.. -
Singleton
Singleton
2022.01.14# Introduce 오늘 소개드릴 디자인 패턴은 싱글턴 패턴입니다. 싱글턴 패턴은 언제 어디서나 손쉽게 접근하고 제어할 수 있다는 장점 덕분에 널리 쓰이고 있습니다. 하지만 그만큼 한계도 뚜렷하기 때문에 장,단점을 명확히 이해한 후에 사용해야 합니다. 싱글턴 패턴이란 하나의 인스턴스만 존재하며 전역적으로 접근 가능한 클래스 디자인 패턴입니다. 일반적으로 언제 어디서나 접근 가능한 변수나 함수를 제공하는 매니저 타입의 클래스(GameManager, AudioManager 등)에 사용하면 유용합니다. # Pros & Cons 장점 1. 전역적으로 접근 가능하기에 해당 클래스를 매번 생성, 검색할 필요가 없으며 따라서 레퍼런스를 저장해놓을 필요도 없습니다. 2. 여러 씬에 걸쳐서 사용되는 데이터를 저장하기에.. -
Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource
Unity에서 슬로우 모션(Slow Motion)효과 주기 - TimeScale/AudioSource
2020.08.11# Introduce Unity 메소드를 활용해 슬로우 모션(Slow Motion)효과를 적용해봅시다. > Time.timeScale > Time.fixedDeltaTime > Time.unscaledDeltaTime > Audio Source Pitch > Fade Effect > Delegate # For example 1. Time.timeScale (시간 조절) Time.timeScale은 시간이 경과하는 크기를 나타냅니다. 해당 값을 수정하여 시간이 흐르는 속도(배율)를 조절할 수 있습니다. using UnityEngine; public class SlowMationClass : MonoBehaviour { public float slowFactor = 0.05f; public void DoSl.. -
설정자와 Delegate로 사운드 온/오프 구현해보기
설정자와 Delegate로 사운드 온/오프 구현해보기
2020.08.06# Introduce BGM이나 SFX의 온/오프를 설정자와 Delegate를 이용하여 간단히 제어해 봅시다. # For example 1. 매니저 우선 매니저 역할을 하는 스크립트에 해당과 같은 Delegate를 추가합니다. public Action _OnSoundMuted; public Action _OnSoundUnmuted; 사운드 on/off 여부를 가르키는 변수를 만들어 줍니다. private bool m_bSoundOn; 사운드 변수에 접근하는 접근자, 설정자를 만들어 줍니다. 설정자에 접근할때(사운드가 켜고 꺼질때) 해당 Delegate가 Invoke 됩니다. public bool _SoundOn { get { return m_bSoundOn; } set { if (value) { _OnS..