본문 바로가기

분류 전체보기

(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 키보드, 마우스 등 모든..