일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- dynamic
- C#
- loop
- Algorithm
- String
- 파이썬
- W3Schools
- UE5
- Material
- 시작해요 언리얼 2022
- dfs
- Class
- DP
- Unity
- Programming
- Unreal Engine 5
- python
- c++
- 프로그래밍
- 재귀
- parameter
- 백준
- 오류
- Basic
- Tutorial
- w3school
- 문제풀이
- github
- guide
- 기초
- Today
- Total
행복한 개구리
Unity3D 팀프 21.06.24 Generic Interface 본문
1. IPUN2라는 Photon이 공통적으로 사용하는 메서드를 작성할 부모 인터페이스를 만들고 그 하위의 Title, Lobby, InGame에서 사용할 인터페이스들을 만든다 (I씬이름PUN2)
2. 그리고 해당 인터페이스들을 모두 IPUN2를 상속하게만든다.
3. 이어서 싱글턴 객체생성부분에서 instance를 IPUN2타입을 반환하게 만든 다음에 GetInstance의 반환형식은 무엇이든 반환할 수 있도록 Generic타입인 T반환타입으로 만들고 T는 결국 IPUN2를 반환한다는 where T : IPUN2 를 이어서 작성한다
4. 그리고 instance가 존재하지 않는다면 해당 싱글턴클래스의 생성자로부터 객체가 생성되겠지만 (사진에서는 TitlePUN2) instance가 반환될때는 결국 Generic타입으로 반환된다 ((T)instance)
이렇게 한다면 각 Lobby, Title, InGame에서 하나의 싱글턴으로 각각 PunCallback의 객체를 찾을 수 있게된다. (기존에 내가 했던 switch를 사용하여 하는것보다 발전된 방법)
또한 "TitlePUN2.GetInstance<I씬이름PUN2>().메서드"를 사용한다면 내가 원하는 인터페이스의 메서드만을 사용할 수 있게된다.
=>성능적인 부분에서는 크게 차이가 없지만 가독성을 상당히 개선해주는 작성방법이다. Interface로 간결하게 메서드들의 정의를 해주고 Generic타입으로 필요없는 인터페이스의 메서드를 생성하지 않게 해준다.
* 단, 싱글턴인 TitlePUN2는 IPUN2, ITitlePUN2, ILobbyPUN2, IInGamePUN2를 모두 인터페이스로 받아야한다.
where T : IPUN2 가 무슨 의미일까 궁금해서 찾아보았다.
where T : IPUN2 는 기본 형식을 IPUN2로 지정하겠다는 의미라고 한다.
'Unity > Project : Cursed Treasure' 카테고리의 다른 글
팀프 21.07.15. 요청(request) 내용(body)을 Sequelize통해 DB에 생성 (0) | 2021.07.15 |
---|---|
팀프 21.07.15. Node.js - Sequelize로 DB에 데이터 추가하기 (0) | 2021.07.15 |
Unity 팀프 21.06.10. 이동 발판 (0) | 2021.06.09 |
Unity 팀프 21.06.03 PUN2 - RPC (0) | 2021.06.03 |
Unity 팀프 21.06.02 PUN2 - Client의 GameObject찾기 (0) | 2021.06.02 |