본문 바로가기

전체 글

(1196)
스프링 컨테이너 ApplicationContext @Configuration이 붙은 AppConfig에서 Bean을 등록하고 생성자 주입 구현 각 객체가 참조하는 인터페이스에서 @Autowired 없어도 @Configuration을 통해 설정한 Bean이 컨테이너에 등록된 후 return 형식에 정의 된대로 자동 주입을 해준다. public class MemberServiceImpl implements MemberService{ private final MemberRepository memberRepository; public MemberServiceImpl(MemberRepository memberRepository) { this.memberRepository = memberRepository; } @Override public void join(Me..
DB 접근 기술 JDBC 자바에서 제공하는 기능으로 DB에 접근할 수 있도록 API를 제공한다 Connection, PreparedStatement 등 직접 선언하여 코드를 구성해야 한다. SQL도 로직에서 직접 작성해야 한다 반복되는 코드가 많고 사용하기 어려움이 많다. JDBC Template JDBC의 반복 코드를 제거해주나, SQL은 직접 작성해야한다 JDBC와 JDBC Template은 DataSource 객체가 필요한데 이것은 Bean으로 등록하지 않아도 컨테이너에서 자동으로 관리하며 주입해준다. JPA SQL을 직접 작성할 필요없이 자바 코드로 대체할 수 있다 ORM을 제공하며 모델에는 @Entity 어노테이션이 필요하다. EntityManager를 통해 쿼리 요청을 수행한다. 스프링 데이터 JPA JPA를..
OCP 적용 DI 구조 OCP (개방 폐쇄 원칙) 확장에는 열려있고 변경에는 닫혀있음 Repository 사용을 생각해본다 데이터 저장에 사용되는 값을 읽어오는 경로와 방법이 다양하게 있을 수 있다. ex) memory, DB (JDBC, JPA, ...) save, findByID, findByName ... 등의 메소드를 가진 추상 클래스 (인터페이스)를 생성하고, 다양한 사용에 대한 repository에서 추상 클래스를 상속받아 자신의 방법에 맞게 구현한다면? 인터페이스 확장이 가능할 것이다. public interface MemberRepository { Member save(Member member); Optional findById(Long id); Optional findByName(String name); Lis..
게임오브젝트 삭제 함수 Destroy(); 오브젝트 삭제 함수로 오브젝트 or 컴포넌트 삭제 가능 컴포넌트 삭제 public class DestroySample : MonoBehaviour { [SerializeField] private GameObject player; private void Awake() { Destroy(player.GetComponent()); } } 오브젝트 삭제 public class DestroySample : MonoBehaviour { [SerializeField] private GameObject player; private void Awake() { Destroy(player); } } 빈 Object에 위 스크립트를 넣고 GameObject로 PlayerController 컴포넌트가 적용된..
Instantiate 활용 예제 prefab 여러 종류에 대해 랜덤 생성 가능 GameObject 배열 사용 public class PrefabTest : MonoBehaviour { [SerializeField] private GameObject[] prefabArray; privat void Awake() { for(int i = 0; i < 10; i++) { int index = Random.Range(0, prefabArray.Length); Vector3 position = new Vector3(-4.5f + i, 0, 0); Instantiate(prefabArray[index], postioion, Quaternion.identity); } } } x,y 위치 또한 Random.Range(-4.5f , 4.5f) 와 같이..
게임 오브젝트 생성 함수 게임 내의 오브젝트를 복제해서 새로운 적을 생성하기 위해서 원본 오브젝트가 필요 원본 오브젝트는 파일로 안전하게 보관 (프리펩) 프리펩? 게임오브젝트를 project view에 파일로 저장해 둔 것 원본으로 사용된 오브젝트가 제거되면 더이상 복제 불가하기 때문 프리펩 생성 방법 원하는 형태로 게임오브젝트를 꾸며준다 Hierarchy View의 게임 오브젝트를 Project View로 드래그 드롭한다 Hierarchy View 오브젝트 삭제 Instantiate(GameObject obj) 게임 오브젝트를 복제해서 생성 모든 컴포넌트 정보가 원본과 완전히 동일 위 메소드를 여러개 호출 시 여러개 복제됨 파라미터로 Vector, Quanternion(회전 값) 적용 가능 회전값 적용 오일러 3차원 3개 각도..
게임오브젝트 물리와 충돌 물리 관련 컴포넌트 2D : Component - Physics 2D 3D : Component - Physics Rigidbody2D 컴포넌트 물리와 중력 담당 RigidBody 적용 시 중력은 바로 적용됨 다른 오브젝트와의 상호작용이 필요한 경우는 Collider 컴포넌트가 필요 Collider2D 컴포넌트 오브젝트의 충돌 범위를 나타냄 Circle Collider 2D가 가장 연산속도가 빠름 Edge Collider 2D는 점의 개수를 정하고 점의 위치를 바꾸어서 다양한 곡선이나 형태로 표현 가능 Edge Radius로 두께 설정가능 Polygon Collider 2D 텍스처 모양과 비슷한 모양으로 생성 -> 연산량이 많아짐 Capsule Collider 2D 보통 사람 형태의 캐릭터에 사용 Com..
게임 오브젝트 이동 transform 내가 소속되어 있는 게임 오브젝트의 Transform 컴포넌트 새로운 위치 = 현재 위치 + (방향 * 속도) transform.position += new Vector3(1, 0, 0) * 1; Vector로 방향을 나타낸 경우 Vecor3.right * 1과 동일한 의미로 작성 가능 Update 내에서 작성 시 Vecor3.right * 1 * Time.deltaTime deltaTime Update 실행 후 다음 Update 실행 까지의 시간 사양이 좋은 컴퓨터의 경우 이 값이 작음 만약 deltaTime을 곱하지 않는다면 Update는 FPS는 사양이 좋을 수록 더 많이 호출되므로 사양이 좋은 컴퓨터와 그렇지 않은 경우의 이동거리 차이가 발생함 Input 키보드, 마우스 등 모든..
이벤트 함수 유니티 이벤트 실행 원리 컴포넌트의 이벤트 함수가 특정 순서나 조건에 따라 실행됨 Unity에서 Start() 실행을 명령하는 경우 모든 오브젝트에서 포함하는 컴포넌트 스크립트의 Start()가 실행됨 Debug.Log로 Unity 콘솔 로깅 가능 이벤트 함수 종류 초기화를 위한 이벤트 함수 : Awake(), Start(), OnEnable() 업데이트를 위한 이벤트 함수 : Update(), LateUpdate(), FixedUpdate() 오브젝트 파괴를 위한 이벤트 함수 : OnDestroy() 종료를 위한 이벤트 함수 : OnApplicationQuit(), OnDisable() Awake 현재 씬에서 게임오브젝트가 활성화 되어 있을 때 1회 호출 컴포넌트가 비활성화 상태여도 게임오브젝트가 활성..
스크립트 개요 게임 오브젝트에 주어지는 각종 명령 제어 게임 내에서 사용되는 여러 오브젝트 생성, 삭제 및 관리 게임 전체 또는 일부를 관리하는 게임 내 시스템 구현 Project View - "+" - C# script 게임 오브젝트에 스크립트를 컴포넌트로 적용하기 위한 조건 스크립트 파일이름과 클래스 이름이 같아야 함 부모 클래스로 MonoBehavior 상속받아야 함 스크립트를 게임 오브젝트의 컴포넌트로 적용 방법 Hierarchy View의 게임오브젝트에 스크립트 파일을 드래그 게임 오브젝트를 선택하고 Inspector View의 빈공간으로 스크립트 파일을 드래그 게임 오브젝트를 선택하고 Add component로 검색해서 넣기 3중 어떤 방법으로도 가능
게임 오브젝트 Texture 출력 2D 이미지 화면 출력 방법 사용할 이미지 에셋의 Texture Type을 Sprite (2D and UI)로 설정 GameObject - 2D Object - Sprite 생성 생성된 오브젝트의 Sprite Reneder 컴포넌트에 있는 sprite 변수에 이미지 에셋 등록 3D 이미지 화면 출력 방법 GameObject - 3D Object - Cube, Sphere, Capsule, Cylinder ... 기본 도형외 다른 물체는 외부 프로그램을 이용해 제작후 가져와서 사용 사용할 이미지 에셋의 Texture Type을 default로 설정 Project View에서 Material 에셋 생성 Meterial 에셋에 이미지 에셋 등록 GameObject - 3D Object - 원하는 오브젝트 생성..
Camera & Light Scene에서 Main Camera 클릭 시 Inspector 확인 씬에 최소 1개 이상 존재해야 함 Camera 컴포넌트 게임 월드를 보는 눈 역할 을 담당 Clear Flags 오브젝트가 존재하지 않는 빈 배경을 어떻게 채울지 결정하는 요소 주로 2D 게임은 Solid Color, 3D는 Skybox 사용 만약 Clear Flag가 Depth only or Don't clear인 경우 오브젝트 움직임에 따른 잔상이 남음 Projection 카메라의 시점을 나타내며 2D와 3D 시점이 존재 Projection이 Othographic : 2D Perspective : 3D Clipping Planes 카메라가 오브젝트를 볼 수 있는 시야 거리 Viewport Rect 카메라가 본 것을 화면에 출력하는 영..