C# 141

9. 1302번 베스트셀러 (LINQ group by)

첫째 줄에 가장 많이 팔린 책의 제목을 출력한다. 만약 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력한다. count랑 temp값을 만들어서 중복값 중에 가장 많은 갯수를 가진 값을 찾아보는 방법으로 해보다가 LINQ를 이용하는 방법을 찾아봄 var group = bookList.GroupBy(x => x) .Select(g => new { Value = g.Key, Count = g.Count() }) .OrderBy(x => x.Value); LINQ를 사용하면 데이터들을 group by를 이용해서 두 그룹으로 나눌 수 있는데 (group by into) LINQ의 확장메서드를 이용해서 바로 group by하고 그 값을 처리할 수 있다고 한다. select는 검색된 값..

C#/알고리즘 2020.06.07

Normal Mapping / Shader / Material - parameter

Texture는 이미지 파일인데 텍스쳐가 3D오브젝트에 적용되기 위해서는 Material이 필요함 Material은 여러가지 Texture 파일을 조합하고 Shader를 비롯한 여러가지 설정을 적용시켜서 오브젝트의 다양한 질감을 나타내는 데 사용됨. 텍스쳐 파일을 가지고 Material을 직접 만들어서 씌워보면서 shader를 적용시켜봄 불러온 텍스쳐는 모두 normal map으로 한번 변환해봄 *normal mapping은 법선 벡터(normal vector)를 이용해서 low poly인 모델에서 사실적인 입체감과 질감을 구현하는 일종의 눈속임 기법이라고 한다. ->normal maaping기술을 사용하면 폴리곤으로 질감과 굴곡을 모두 나타내 것보다 훨씬 적은 연산과 리소스로 많은 폴리곤 수를 가진 오..

C#/Problems 2020.06.04

8. 1343번 폴리오미노

먼저 그리디 알고리즘을 알아보았다. 지금 할 수 있는 단계에서 최선의 해결책을 얻는 알고리즘이라고 한다. 동전 나누는게 예로 많이 나왔는데 만약 560원이 있다면 가장 적은 동전 갯수인 500원짜리 1개 50원짜리 1개 10원짜리 1개로 나눌 수 있고 이게 그리디 알고리즘을 적용하여 그때그때 최선의 결과로 나타내는 것이라고 한다. 여기 문제에 적용하면 먼저 보드를 4로 나눠서 4의 배수인지 확인해보고 A를 채우고 아니라면 4로 나눈 나머지가 2의 배수인지 확인해서 2의 배수라면 A를 먼저 채운다음 B를 채우면 되는 것이고 2의 배수도 아니라면 -1을 출력해주면 되는 것 같았다. 입력되는 문자열을 .을 기준으로 나누고 A랑 B를 X개수만큼 각각 잘 대체했다 .을 도대체 어떻게 나타낼까 엄청 고민하다가 su..

C#/알고리즘 2020.06.01

TexturePacker 로 이미지 가져오기 / 배경 이동시키기 / Draw Mode Tiled

1. TexturePacker - 이미지를 atlas 처럼 Sprite Pack으로 만들어줌 - 이미지 용량 낭비를 줄일 수 있음 - 유니티 asset store에서 TexturePacker를 검색해서 plugin을 설치해줘야함 - TexturePacker에서 advance setting에서 데이터 이름과 저장될 경로를 지정하는데 unity asset폴더로 지정하면 이미지를 뽑자마자 바로 Asset에 데이터파일과 import되고 자동으로 sheet에 있는 이미지들이 하나하나 슬라이스 돼서 나눠짐. TexturePacker - Create Sprite Sheets for your game! TexturePacker creates sprite sheets for your game engine www.code..

C#/Problems 2020.05.28

2020.05.27. 수업내용 - 2D Collider, Rigidbody, 이동 및 점프

**2D로 만들 때 카메라 Projection 꼭 ortho로 해주기 Rigidbody - 보통 중력의 영향을 주기 위해서 사용(Use Gravity 활성화) - 물리적인 제어를 구현 - Rigidbody를 사용하거나 Tranform을 쓰거나 둘중 하나를 선택해야함 - Rigidbody 2D를 쓰면 Collider도 2D로 맞춰서 써야함 리지드바디 - Unity 매뉴얼 Rigidbody 는 GameObject 가 물리 제어로 동작하게 합니다. 리지드바디는 힘과 토크를 받아 오브젝트가 사실적으로 움직이도록 해줍니다. 리지드바디가 포함된 모든 게임 오브젝트는 중력의 영향을 �� docs.unity3d.com Collider -물리 충돌 처리를 위한 오브젝트 형태 -보이지 않음 -Mesh : 형태 -한 객체에..

C#/수업내용 2020.05.28

2020.05.26. 수업내용 - Coroutine 으로 애니메이션 실행하기

Coroutine 특징 1. IEnumerator 형식을 반환값으로 가진다 2. yield return ~ 에서 실행을 중지하고 다음 프레임으로 넘어가서 실행을 재개한다. 3. 사용할 때 StartCoroutine 메서드를 사용한다. ex) StartCoroutine(this.Move()); - MonoBehaviour 상속받는 클래스에서만 사용 가능 Coroutine을 쓰는 가장 큰 목적은 최적화! Updata함수에서 매 프레임마다 실행하지 않고 원하는 시간만큼 원하는 시점에 실행시킬 수 있음 1. Test1 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 31 32 33 34 35 36 37 38 39 4..

C#/수업내용 2020.05.26

2020.05.26. 수업내용 - 2D animator/ 2D 오브젝트 움직이기

1. 새로운 애니메이션 만들기 window -> Asset에 Animation 폴더를 하나 만들고 캐릭터가 선택된 상태에서 Window->animation -> createNewClip -> 폴더 선택 후 이름 저장 점 3개가 나열된 버튼을 누르면 시간이나 프레임단위로 변경할 수 있다. 모델에서 Animator를 더블클릭하면 StateMachine 이 나오는데 주황색 State(node)가 기본으로 설정된 애니메이션이고 회색인 다른 애니메이션에서 마우스 우클릭으로 Set as Layer Default State 를 누르면 플레이 시 자동으로 실행되는 애니메이션으로 설정할 수 있다. State : 애니메니션의 한 상태인 노드(걷기, idle, run등..) StateMachine : State들이 연결된 ..

C#/수업내용 2020.05.26

2020.05.25. 수업내용 - world 좌표 -> Screen좌표, hudText효과 연출하기/ 적 어그로 끌기

카페에 있는 요구사항을 대부분 충족시키려고 했습니다 적이 공격당했을 때 데미지 모션을 실행하는 부분이 잘 안됐습니다 히어로의 체력에 데미지를 주고 게이지에 반영하는 부분은 데미지 모션 구현이 해결되면 같이 구현해보려고 합니다. 더 공부해볼 것 1. Test 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88..

C#/수업내용 2020.05.26

2020.05.22. 수업내용 - 로그인 (InputField 이용)

InputField에 텍스트를 제대로 표현하려면 Update에서 Text에 값을 할당해야한다. InputField 컴포넌트에서 Caret Width 를 큰값으로 (최대 5) 움직이면 깜빡이는 커서가 넓어진다 Custom Caret Color 를 체크하면 원하는 커서 색으로 바꿀 수 있다. 1. Login -로그인씬을 관리 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 31 32 33 34 35 36 37 38 using System.Collections; using System.Collections.Generic; using UnityEngine; public class Login : MonoBehaviou..

C#/수업내용 2020.05.24

2020.05.24. 과제 - 로그인 -> 캐릭터 선택 -> 레이캐스트를 이용한 이동, 자동공격 -> 죽으면 팝업 및 재시작 -> 로그인..반복

DataManager, 매핑 클래스는 생략했습니다. 어려웠던 것.. 비동기화로 씬 로드하는 것과 대리자는 어느정도 사용하기 좀더 수월해진 것 같은데 애니메이션이 아직도 매끄럽게 사용하기 어려워서 더 연습해야 할 것 같습니다. ㅠㅠ EventSystem.current.IsPointerOverGameObject() GameObject들 위의 UI를 클릭했을 때 true GameObject들을 클릭했을 때 false를 반환해준다. *UI 오브젝트에 raycast가 체크되어있어야하고 해당 씬에 Hierachy에 EventSystem오브젝트가 있어야한다. 1. Login 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..

C#/과제 2020.05.24