- Unity DOTS - IEnableableComponent을 반복문없이 변경하기개양반오늘은 매우 짧은 팁이다.IEnableableComponent는 가장 효율적인 방법으로 Entity의 상태를 변경할 수 있는 컴포넌트이다. 다수의 Entity 상태를 변경할 때는 꼭 반복문을 써야 할까? 보통은 많이 사용될 거 같은 기능에 대해 함수로 기능을 만들어줄 때가 많다. 먼저 entityManager와 entityQuery를 변수로 만든다.var entityManager = World.DefaultGameObjectInjectionWorld.EntityManager;var entityQuery = new EntityQueryBuilder(Allocator.Temp) .WithAll() .WithPresent() ..
- 2025-02-10 19:23:07
- Unity DOTS - 클릭한 장소로 이동하기개양반개요Unity DOTS에서 클릭한 좌표로 이동시키는 방법에 대해 알아보자. Scene 작업1. 서브씬 만들기 게임오브젝트를 Entity로 변환하려면 SubScene에서 게임오브젝트를 생성해야 한다.미리 Entity로 만들어서 런타임에서 랙걸리지 않기 위함이라고 생각하면 된다. 2. Ground 생성SubScene 의 자식으로 Plane을 만든다. Ground로 이름을 변경하고 LayerMask에 Ground를 추가해서 해당 오브젝트의 레이어를 Ground로 변경한다. 3. 캐릭터 생성SubScene의 자식오브젝트로 빈게임오브젝트를 만들고 이름을 Player로 변경한다. Rigidbody와 Capsule Collider를 추가한다.Player의 자식오브젝트로 Capsule을 추가하고 Collider를 ..
- 2025-02-09 23:27:58
- 유니티 에셋 추천 - BG Database Addressable 사용 #5개양반Addressable은 메모리를 관리할때 매우 편하게 사용하도록 유니티에서 제공해주는 기능이다. BG Database에서도 Addressable을 이용해서 메모리 관리를 할 수 있다. 뿐만 아니라 BG에서 제공해주는 기능을 사용하면 훨씬 간단하게 메모리 관리를 해 줄 수 있다. 1. CodeGen 설정CodeGen을 설정하면 BGDatabase에서 Addressable을 더 편하게 사용할 수 있다. BG Database의 Addons 탭으로 이동해서 Enabled를 활성화한다. 1-1 Code generator 설정Code generator 항목의 우측에 Use default를 클릭하면 자동으로 설정된다. 1-2 Source File 설정임의의 폴더에 BGCodeGen.cs를 만든다. BG Databa..
- 2022-12-06 20:13:03
- 유니티 에셋 추천 - BG Database 암호화 #4개양반BG Database를 암호화하는 것에 대해 다뤄보겠다. 몰론, 해커가 당신의 클라이언트를 뚫고 디버깅이 가능한 상태라면 이런 조치는 손 쉽게 뚫려버린다. 암호화 키가 클라이언트에 있으니 어딘가에 있을 암호키를 찾으면 바로 뚫리는 것이다. 그럼에도 BGDatabase를 암호화하는 이유는 이중 삼중으로 안정장치를 한다는 것에 의미가 있는 것이다. 1. Encryptor 클래스 생성 데이터베이스를 암호화와 복호화하는 클래스를 생성하겠다. EncryptorExample.cs를 만들고 아래의 코드를 작성한다. using System; using System.IO; using System.Security.Cryptography; using BansheeGz.BGDatabase; // 이것은 데이터 암호화를 구현하..
- 2022-12-06 16:44:55
- 유니티 에셋 추천 - BG Database 커스텀 로더 #3개양반지난 시간에는 Resources 폴더에 로더 위치를 설정했다. 하지만, Resources 폴더는 여러가지 단점으로 인해 프로토타입에서만 사용하는 권장하는 폴더이다. 그래서 이번엔 원하는 폴더에 로더 위치를 설정하는 커스텀 로더에 대해 다뤄본다. 리소스폴더를 사용하더라도 리소스폴더의 단점과 BGDatabase가 내부적으로 어떻게 동작을 하는지 명확히 알고 있고 그래서 리소스폴더에서 사용해도 괜찮다는 판단이 내려졌다면 Resources폴더에 로더를 위치해도 된다. 본인이 명확하게 알고 있다면 말이다. 1. 로더 종류와 특징 Resources StreamingAssets Custom 파일 위치 Resources 폴더 Assets/StreamingAssets 폴더 아래 프로젝트의 모든 위치 장점 추가 노력 없이..
- 2022-12-05 21:48:49
- 유니티 에셋 추천 - BG Database 설정 #2개양반1. 패키지 임포트 BG Database를 구매하고 패키지매니저에서 Import까지 완료한다. 2. 로더 설정 유니티의 상단 메뉴에서 Window - BGDatabase를 클릭하면 아래의 창이 팝업된다. Create new Database file을 눌러준다. Assets 폴더에 Resources 폴더를 만들고 BGDatabase 창에서 Choose로 Resources폴더를 클릭한다. Create 버튼을 클릭하면 Resoursces 폴더에 bansheegz_database 파일이 생성된다. 리소스 폴더에 많은 에셋이 저장하면 데이터베이스의 로딩 속도가 느려질 수 있다. 그래서 유니티에서는 프로토 타입 외의 용도로 사용하는 것을 권장하지 않는다. 사용한다 하더라도 리소스폴더의 특징을 충분히 이해하고 그 목..
- 2022-12-05 20:20:25
- 유니티 에셋 추천 - BG Database 소개 #1개양반무엇에 쓰는 물건? BG Database는 게임 내 데이터를 위한 데이터 관리자이다. 엑셀과 유사한 GUI이며 Excel/Google 스프레드 시트와 동기화가 가능하다. 저장/로드 가능하며 Unity Assets 필드, 코드 생성, 비주얼 스크립팅 도구와도 통합된다. Android, Desktop, IOS에서 사용할 수 있다. 사용 예제 깔끔한 UI를 제공하고 있다. 구매 링크 아래는 구매 링크입니다. 아래 링크로 구매하시면 에필리에이트로 활동하는 저에게 소정의 원고료가 지급되어 저에게 큰 힘이 됩니다. HTML 삽입 미리보기할 수 없는 소스 가격 : 40달러
- 2022-12-05 19:16:02
- unity.physics - CastRay 레이케스트개양반1. 개요 UNITY DOTS는 unity.physics로 물리를 구현한다. unity.physics에서 Ray를 사용하는 방법에 대해 알아보자. 이해를 돕기 위해 테스트 환경을 만드는 과정까지 세세히 설명했다. RayCast 코드를 보고 싶으신 분은 3. RayCast 구현으로 넘어가면 된다. 2. 환경 만들기 2-1 서브 씬 만들기 Hirarchy뷰에 마우스 우클릭 -> New Sub Scene를 눌러 Entity를 생성할 SubScene을 만든다. 2-2 테스트할 게임오브젝트 제작 2-2-1 Cube 생성하기 위에서 만든 Sub Scene에 Cube 두개를 생성하고 Transform.Position.z 값을 적당히 설정하여 떨어트린다. 정면의 대상을 탐색할 예정이다. 2-2-2 Physics Sha..
- 2022-12-04 03:09:15
- UNITY DOTS TIP - ComponentData를 세분화 해라개양반세분화된 EntityQuery를 작성하기 위해 1. 설명 Entity의 ComponentData에 바로 엑세스하는 것은 임의 접근이므로 비효율적으로 처리된다. 그래서 EntityQuery를 통해 구성 요소를 처리해야 한다. Query로 조회하는 ComponentData가 세분화되고 작을수록 CPU가 캐시를 훨씬 더 효율적으로 사용할 수 있다. CPU의 캐시 라인이 64비트에 불과하므로 필요한 ComponentData만 조회하도록 Data를 세분화 하는 것이 좋다. 캐시란? 데이터를 미리 복사해 놓는 임시 장소를 가리킨다. 2. 예제 코드 public struct Character : IComponentData { public int Healty; public int Power; public bool Is..
- 2022-12-01 19:16:30
- UNITY DOTS - JobHandle.CombineDependencies개양반1. 코드 설명 두 개의 종속성을 하나로 합칠 때 사용하는 코드이다. // 반환 타입은 JobHandle JobHandle.CombineDependencies(JobHandle, JobHandle); 2. 필요 이유 Job은 필요에 따라 비동기로 진행되어야 하고 어느 시점에서 앞의 Job들이 완료되면 실행되게끔 처리해야 할 때가 있다. 이때, JobHandle.CombineDependencies 로 앞의 Job들의 종속성을 합쳐서 동기 시점을 맞출 수 있다. 3. 예제 코드 아래의 코드는 Job을 Schedule할 때 앞의 Job의 종속성을 매개변수로 전달하여 동기 방식으로 코드가 실행된다. A가 끝나면 B가 실행되고 // B가 끝나면 C가 실행된다. var jobHandleA = new JobA(){ ..
- 2022-11-29 23:03:44
- UNITY DOTS - Unity.Mathematics.Random 랜덤 사용하기개양반1. 개요 DOTS에서는 Random 값을 얻을려면 Unity.Mathematics 패키지에 있는 Random을 사용해야 한다. 하지만, 기존의 UnityEngine.Random 처럼 사용하면 모든 Entity가 같은 랜덤 값을 생성하는 문제가 발생한다. 해결 방법으로는 Entity가 개별 Seed를 가지고 있으면 된다. 2. 예제 2-1 ComponentData public struct RandomScoreData : IComponentData { // Entity는 고유한 Ramdom Component를 가져야 한다. public Random Randomizer; } 2-2 Authoring public class RandomScoreAuthoring : MonoBehaviour { public fl..
- 2022-11-28 18:57:07
- UNITY DOTS - 거리 계산하기개양반Unity DOTS 에서 수학 패키지로 using Unity.Mathematics를 사용해야 한다. using Unity.Mathematics에서 제공하는 오브젝트 간의 거리를 계산하는 함수에는 math.distance와 math.distancesq 2개가 존재한다. 1. math.distance 정확한 거리를 계산할 때 사용한다. 두 점간의 제곱 거리에 루트를 한 값이라 컴퓨터 성능에 악영향을 끼친다. 컴퓨터는 나누셈 연산에 잼병이다. math.distance(AEntity의 위치, BEntity의 위치); 2. math.distancesq 정확한 거리를 측정할 때는 좋지 않지만 루트 연산을 하지 않으므로 성능에 좋다. 위 Distance의 거리 계산에서 루트 계산을 하지 않은 두 점 사이의 제곱 거리..
- 2022-11-25 20:09:50
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)