게임 개발/C#22 유니티 C# override, virtual 유니티 공부를 조금 해본 사람이라면, 서적이나 다른 사람이 만든 코드에서 이러한 새로운 개념을 보았을 것이다. 이 개념들은 생각보다 쉽다. 간단히 말하자면, override는 이 함수를 고치겠다.이고, virtual은 이 함수를 고쳐도 된다는 허락이다. 표기\의미 뜻 Override 함수를 고치는 걸 통보 Virtual 함수를 고치는걸 허락 유니티는 클래스 개념이 존재하는 만큼, 상속 등 함수를 공유할 수 있는 경우가 많은데, 그럴 때 쓰는 함수들이다. 예제를 보여주자면 public virtual void OnPointerUp(PointerEventData eventData) { input = Vector2.zero; handle.anchoredPosition = Vector2.zero; } //이 클래.. 게임 개발/C# 2022. 11. 21. C# override C#의 override에 대해 알아보겠다. override의 기능은 원래 있던 함수를 확장하거나 , 바꾸는 것이다. 클래스 개념을 아는 사람이라면 스크립트를 쓸때 클래스를 부모로 설정할수 있다는걸 알텐데, public class Monster : Monobehaviour { public void debug() { Debug.Log("monster"); } } 라는 몬스터 클래스가 있다고 하자, 그럼 드래곤 스크립트를 짤때 public class Dragon : Monster { public void debug() { Debug.Log("monster"); Debug.Log("추가"); } } 이렇게 debug 함수에 기능을 추가하고 싶다면 이때 override를 쓴다. public class Monste.. 게임 개발/C# 2022. 8. 19. C# enum enum 은 열거형이라고 불리며, public enum Name { John, Jake, nicole } 이런식으로 선언해줄 수 있다. 아무런 값도 할당하지 않으면 첫번째 값에는 0, 두번째는 1, 세번째는 2, 등으로 1씩 늘어나며 자동설정된다. 다른 기능을 만들때 가져오고싶을때는 Name.John 과같이 .을 붙이고 이름으로 가져올 수 있다. 애니메이션을 만들때 public enum State { Walk, Idle, Run } 이렇게도 많이 쓰인다. 도움이 되었길 바라며, 끝. 게임 개발/C# 2022. 8. 17. 유니티) C# 기초 자료형 정리 오늘은 기초로 돌아가서 자료형들을 정리해보겠다. + 원리 일단 제일 많이 쓰이는것부터 인간 친화적으로 소개해보겠다. float : 소수, 정수 모두 포함하는 수(소수점자리 7개 까지) int : 정수. string : 문자열 bool : 참과 거짓(if문을 만들때 필요) 이게 제일 주로 쓰인다. 이것만 알아도 게임을 만드는데에는 딱히 지장이 없다. 타입을 바꾸는 것도 궁금할것 같은데, 일단 왠만한건 int num = (int)5.5f; 처럼 괄호를 이용해서 바꿀수 있는데, 안되는것들도 많으니 하나하나 소개하자면 float.parse(문자열); int.parse(문자열); 등등 parse가 기본적으로 쓰인다. 왜 안에 문자열이 들어가나면 무슨 자료형이던지 문자열로 바꿀수 있기 때문이다 .ToString().. 게임 개발/C# 2022. 8. 16. 유니티 C# rigidbody를 이용한 캐릭터 이동 유니티에서 초보들은 이동을 구현할때 transform.position = transform.position + distance; 이런식으로 현재위치 = 현재위치 + 갈 위치; 로 표현한다. 하지만 트랜스폼으로 이동했을때의 단점은 순간이동을 하는 거랑 비슷하기때문에 rigidbody를 넣어 놓았다고 해도 벽을 통과할수있다. 그렇기에 중급자인 우리는 Rigidbody.MovePosition(Rigidbody.position + distance); 를 써서 순간이동 현상을 예방해 주어야 한다. 솔직히 Rigidbody.position 이 있다는것은 처음 알았다... 살짝 충격이다 그럼 도움이 되었길 바라며, 끝. 게임 개발/C# 2022. 8. 16. 유니티 C# get, set(프로퍼티) 오늘은 중요하다. 프로퍼티라고 불리는 get과 set에 대하여 알아보자. 나는 이 개념에 대해 많이 헤맸는데 이글을 본사람은 이글에서 한번에 이해하고 가길 바란다. 보통 우리는 변수를 선언할때 Type Name = value; 로 선언한다. 하지만 get과 set이 등장하는 변수에는 Type Name{ get { xxx... } set { xxxx.. }} 이라는 처음볼때는 미쳐버린 이상한 코드가 나온다. get과 set의 기능을 알려주겠다. set부터 설명하겠다. set은 다른 코드에서 이 변수를 정의 할때 실행되며, 함수처럼 이 변수를 정의한 값을 value라는 키워드로 받는다. 그래서 만약 다각형의 내각을 구해주는 계산기가 있다면 음수각형, 0각형, 1각형, 2각형은 있을 수 없기에 set { if.. 게임 개발/C# 2022. 8. 15. 유니티 C# Static(정적) 사용법, 기능 유니티를 나름 오랫동안 해본 나에게도 static이란 기능은 써보지 않았었다. 왜냐하면 일단 보이는것만으로도 어려워보이고 무슨기능일지는 모르지만 그렇게 엄청난 도움이 되는 기능이 아닐것같았기 때문이다. 하지만 저 지식 하나의 기능은 생각보다 놀랍다. 우리는 보통 변수를 만들때 한 스크립트 안에서 작성하게 되는데, 여러, 아니 모든 스크립트에서 필요할만한 중요한 변수는 어디다가 만들어야 할지 고민하게 되고, 만들었다고 하더라도 저 변수를 쓰는 스크립트마다 클래스를 가져와서 사용해야하니 대단히 불편했다. 하지만 static을 사용하면 쉽게 말해 모든 스크립트에서 쉽게 가져올수 있게된다. 그리고 스크립트가 여러개여도 저 변수는 하나만 적용된다. 왕 같은 자리에 있다고 할 수 있다. 예를 들면 bool isGa.. 게임 개발/C# 2022. 8. 14. 유니티 게임이 시작한 후 흐른 시간 구하기 제목만 봐서는 Time.delta 을 이용해 Update 함수에 넣어서 1초씩 증가 시킨다 이런거 일것같지만 생각보다 유니티의 Time 클래스에는 좋은기능이 있다. Time.time이라는 것이 있는데 이것은 게임이 시작한 후 흐른 시간(초) 를 세준다. 현재시간으로도 간주할수있겠다. 스피드런 같은 게임에서 이걸로 타이머를 만들어줘도 되겠다. 도움이 되었길 바라며 본론은 Time.time 이였으며 끝. 게임 개발/C# 2022. 8. 14. C# 타입끼리변환하는법 (형변환 하는법) 파싱, 강제형변환 나는 지금까지 각각의 함수가 변환시켜주는것만 알고있었다. 예를들면 문자열이 되고 싶다면 .Tostring() 함수를 쓰고, float 값을 얻고 싶다면 float.parse 함수, int 는 int.parse 등 Parse를 사용하는 것들은 파싱이라고 한다. Parsing 의 발음과 같다. parse와 tostring 같은 함수들만이 변환해주는건줄 알았는데 더욱더 간단한 문법이 있었다. 자기가 원하는 타입을 괄호 안에넣고 뒤에 바꾸고 싶은 변수를 쓰면 된다. 예시를 보여주자면 float num1 = 5.55f; num1 = (int)num1; 이렇게 하면 5.55의 int값, 5가 된다. float와 int뿐만 아니라 다른 타입끼리도 된다. 하지만 float와 배열같이 말도안되는 타입끼리는 안된다. 도움.. 게임 개발/C# 2022. 8. 8. Input.GetAxis 값의 의미 Input.GetAxis("Horizontal")은 true, false가 아닌 -1 ~ 1 로 구성된 실수가 나오는데, 보통 유니티를 배울때는 궁금한점이 없었겠지만 키보드의 키를 누르는것에만 초점을 맞춰본다면 이건 굉장히 비효율적일수있다. 키보드를 누르는것에서 그쳤다면 -1 또는 1 "로만" 나오게 했거나 True 나 False로 표현했을것이다. 본론으로가서 -1 ~ 1사이의 실수인 이유는 조이스틱등 다른 기기의 호환 때문이다. 조이스틱은 끝까지 당길수도 있고, 조금만 밀어 세심하게 조정할수도 있다. 그래서 -1 ~ 1 사이의 숫자로 플레이어가 얼마나 세심하게 조이스틱을 당기고 있는지를 표현한다. 도움이 되었길 바라며, 끝. 게임 개발/C# 2022. 8. 7. C# ?로 특정 if문 생략하기 (삼항연산자) C#에서는 ?를 이용하여 특정 코드가 필요한 부분을 생략 할수있다. 사용법) String TF; bool B; TF = B ? "True" : "False"; 만약에 B가 True라면 문자열 TF 에는 "True"로 초기화되고 B가 False라면 문자열 TF 에는 "False"로 초기화된다. if(B) { TF = "True"; } else { TF = "False"; } 이런 if문을 ?하나로 간단히 해줄수가 있다. 도움이 되었길 바라며, 끝. 게임 개발/C# 2022. 7. 27. C# 문자열을 사용하지않고 숫자의 길이를 알아내는법 Math.Floor(Math.Log10(n) + 1); 를 이용해 문자열을 사용하지않고 숫자의 길이를 알수있다 Math.Log10(n)은 10의 몇제곱이 n인지를 나타낸다. 예를 들어보자면 10은 10의 1제곱이기에 n에 10을 넣으면 1이 나온다. 100을 넣으면 10의 2제곱이기에 2가 나오고, 1000을 넣으면 3이 나온다. 그렇다는건 10 ~ 99까지의 수는 1 ~ 1.999xxx가 최대값일 것이다. 100 ~ 999 는 10 ~ 19.xxx가 최대일 것이고, 1000 부터 1999는 20 ~ 29.xxx가 될것이다. 표처럼 나타내보자면 10 : 1 10 ~ 99 : 1 ~ 9.99.... 100 : 2 100 ~ 999 : 2 ~ 2.999.... 1000 : 3 1000 ~ 9999 : 3 ~.. 게임 개발/C# 2022. 7. 15. 이전 1 2 다음 💲 추천 글