2023. 11. 27. 18:27ㆍSKKU DT
https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=316060015&start=slayer
Project name은 소스 관리를 위해서 소문자로, 빈공간 없이 '-' 대쉬로 이름을 짓는다.
Connect to Unity Cloud는 샘플 예제 같은 경우 체크를 해제한다. Cloud에서 잘 삭제가 되지 않음.
Visual Studio Code 설치
Visual Studio보다 훨씬 가볍다.
**Rider라는 유료 툴도 있음
External Tools - [Visual Studio Code]를 선택한다.
Extensions 설치
오른쪽 하단에 설치하겠냐는 팝업창에서 모두 Install 하면 된다.
.Net 8.0 다운로드
이후 컴퓨터 재부팅
Run - Attach to Unity가 뜨고 자동완성이 된다면 유니티와 VScode의 연결이 완료된 것이다.
BreakPoint 설정 후 코드 실행하고, Unity로 돌아가 씬을 실행하면 BreakPoint 부분에서 멈춘다.
변수 타입 예제
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class IntegralTypes : MonoBehaviour
{
void Start()
{
sbyte a = -10;
byte b = 40;
Debug.Log($"a = {a}, b = {b}");
short c = -30000;
ushort d = 60000;
Debug.Log($"c = {c}, d = {d}");
int e = -1000_0000;
uint f = 3_0000_0000;
Debug.Log($"e = {e}, f = {f}");
long g = -5000_0000_0000;
ulong h = 200_0000_0000_0000_0000;
Debug.Log($"g = {g}, h = {h}");
}
}
*//$ 붙이면 쌍따옴표 사이의 값 중 중괄호 사이의 값은 변수를 불러온다
Debug.Log($"g = {g}, h = {h}");
Debug.Log("g = " + g + ", h = " + h);
Debug.Log(string.Format("g = {0}, h = {1}", g, h));
**출력 방법은 여러가지가 있다.
Indent를 좀 더 확실하게 구분하기 위해서 indent-rainbow를 설치한다.
Tab으로 괄호를 넘어가기 위해 TabOut 설치한다.
변수의 자료형
{
byte a = 255;
sbyte b = (sbyte)a;
Debug.Log(a); //255 출력
Debug.Log(b); //-1 출력
}
{
uint a = uint.MaxValue; //최댓값 대입
Debug.Log(a); //4294967295출력
a = a + 1;
Debug.Log(a); //0출력(오버플로우)
}
자료의 형 변환
{
int a = 123;
string b = a.ToString();
Debug.Log(b);
float c = 3.14f;
string d = c.ToString();
Debug.Log(d);
string e = "123456";
int f = Convert.ToInt32(e); //문자열을 32비트 숫자로 변환
Debug.Log(f);
string g = "1.2345";
float h = float.Parse(g); //문자열을 float 타입으로 변환
Debug.Log(h);
}
상수 선언
{
//서버의 주소 같은 경우 상수로 선언
const int MAX_INT = 2147483647;
const int MIN_INT = -2147483648;
Debug.Log(MAX_INT);
Debug.Log(MIN_INT);
}
열거형
//enum 선언. 변수의 값을 한정하고자 할 때 사용
enum DialogResult{ YES, NO, CANCEL, CONFIRM, OK }
void Start()
{
{
Debug.Log((int)DialogResult.YES); //0출력
Debug.Log((int)DialogResult.NO); //1출력
Debug.Log((int)DialogResult.CANCEL); //2출력
Debug.Log((int)DialogResult.CONFIRM); //3출력
Debug.Log((int)DialogResult.OK); //4출력
}
}
enum DialogResult{ YES, NO, CANCEL, CONFIRM, OK }
void Start()
{
{
//enum은 변수의 타입처럼 사용할 수 있다. DialogResult result = ~~
DialogResult result = DialogResult.YES;
Debug.Log(result == DialogResult.YES); //True 출력
Debug.Log(result == DialogResult.NO); //False 출력
Debug.Log(result == DialogResult.CANCEL); //False 출력
Debug.Log(result == DialogResult.CONFIRM); //False 출력
Debug.Log(result == DialogResult.OK); //False 출력
}
}
Nullable 형식
public class Nullable : MonoBehaviour
{
void Start()
{
int? a = null; //물음표를 붙이면 int 타입에도 null을 대입할 수 있다.
Debug.Log(a.HasValue); //a에 값이 있느냐? False 출력
Debug.Log(a != null); //a가 null이 아니냐? False 출력
a = 3;
Debug.Log(a.HasValue); //True 출력
Debug.Log(a != null); //True 출력
Debug.Log(a.Value); //3 출력
}
}
var 형식
{
var a = 20;
Debug.Log($"Type: {a.GetType()}, Value: {a}");
var b = 3.1414213;
Debug.Log($"Type: {b.GetType()}, Value: {b}"); //float으로 충분하지만 double을 사용한다
var c = "Hello";
Debug.Log($"Type: {c.GetType()}, Value: {c}");
var d = new int[](10,20,30);
foreach(var e in d)
{
Debug.Log(e);
}
}
문자열 안에서 찾기
public class StringSearch : MonoBehaviour
{
void Start()
{
string greeting = "Good Morning";
Debug.Log(greeting);
//IndexOf() 괄호안에 찾고자 하는 문자열 넣기
Debug.Log($"IndexOf: 'Good' : {greeting.IndexOf("Good")}"); //0 출력(쪽에서 첫번째)
Debug.Log($"IndexOf: 'o' : {greeting.IndexOf("o")}"); //1 출력(쪽에서 두번째)
//LastIndexOf() 뒤에서 부터 값을 찾는 형태
Debug.Log($"LastIndexOf 'Good' : {greeting.LastIndexOf("Good")}"); //0 출력
Debug.Log($"LastIndexOf 'g' : {greeting.LastIndexOf("g")}"); //11 출력
//StartWith() 특정한 문자열로 시작 되는지
Debug.Log($"StartWith 'Good' : {greeting.StartsWith("Good")}"); //True 출력
Debug.Log($"StartWith 'g' : {greeting.StartsWith("Morning")}"); //False 출력
//EndWith() 특정한 문자열로 종료가 되는지
Debug.Log($"EndWith 'Good' : {greeting.EndsWith("Good")}"); //False 출력
Debug.Log($"EndWith 'Morning' : {greeting.EndsWith("Morning")}"); //True 출력
//Contains() 특정한 문자열을 포함하는지
Debug.Log($"Contains 'Evening' : {greeting.Contains("Evening")}"); //False 출력
Debug.Log($"Contains 'Morning' : {greeting.Contains("Morning")}"); //True 출력
//Replace 특정한 문자열을 다른 문자열로 치환
Debug.Log($"Repalced 'Morning' with 'Evening' : {greeting.Replace("Morning", "Evening")}");
}
}
문자열 분할하기
public class StringSlice : MonoBehaviour
{
void Start()
{
string greeting = "Good Morning";
Debug.Log(greeting.Substring(0,5)); //"Good", 괄호 안의 값이 2개면 자르고자 하는 시작과 끝
Debug.Log(greeting.Substring(5)); //"Morning", 괄호 안의 값이 1개면 자르는 시작점
string[] arr = greeting.Split(new string[] {" "}, System.StringSplitOptions.None); //공백을 기준으로 문자열을 자르겠다, using System을 쓰면 앞에 System 없어도 된다.
foreach(string element in arr)
Debug.Log($"{element}");
}
}
문자열 서식 맞추기
public class StringFormatBasic : MonoBehaviour
{
void Start()
{
string fmt = "{0, -20}{1,-15}{2, 30}"; //중괄호 앞 숫자들은 각각 0번, 1번, 2번을 의미한다. 뒤의 숫자는 위치를 의미한다. 각각 -20, -15, 30만큼의 공간 확보
var result1 = string.Format(fmt, "Publischer", "Author", "Title");
var result2 = string.Format(fmt, "Marvel", "Stan Lee", "Iron Man");
var result3 = string.Format(fmt, "Hanbit", "Victor", "This is C#");
var result4 = string.Format(fmt, "Prentice Hall", "K&R", "The C Programming Language");
}
}
변수 선언 부분에 BreakPoint를 놓고 디버그를 하면, [VARIABLES] 란에 변수가 보인다.
[WATCH]에서 fmt를 추가하면 계속 fmt 변수를 주시할 수 있다.
날짜 형식
public class StringFormatBasic : MonoBehaviour
{
void Start()
{
string fmt = "{0, -20}{1,-15}{2, 30}"; //중괄호 앞 숫자들은 각각 0번, 1번, 2번을 의미한다. 뒤의 숫자는 위치를 의미한다. 각각 -20, -15, 30만큼의 공간 확보
var result1 = string.Format(fmt, "Publischer", "Author", "Title");
var result2 = string.Format(fmt, "Marvel", "Stan Lee", "Iron Man");
var result3 = string.Format(fmt, "Hanbit", "Victor", "This is C#");
var result4 = string.Format(fmt, "Prentice Hall", "K&R", "The C Programming Language");
DateTime dt = new DateTime(2018, 11, 3, 23,18,22); //날짜 표현, 처리 (년, 월, 일, 시,분,초)
Debug.Log(string.Format("12시간 형식: {0:yyyy-MM-dd tt hh:mm:ss (ddd)}", dt));
Debug.Log(string.Format("24시간 형식: {0:yyyy-MM-dd HH:mm:ss (ddd)}", dt));
CultureInfo ciKo = new CultureInfo("ko-KR");
Debug.Log(dt.ToString("yyyy-MM-dd tt hh:mm:ss (ddd)", ciKo));
Debug.Log(dt.ToString("yyyy-MM-dd HH:mm:ss (ddd)", ciKo));
Debug.Log(dt.ToString(ciKo));
CultureInfo ciEn = new CultureInfo("en-US");
Debug.Log(dt.ToString("yyyy-MM-dd tt hh:mm:ss (ddd)", ciEn));
Debug.Log(dt.ToString("yyyy-MM-dd HH:mm:ss (ddd)", ciEn));
Debug.Log(dt.ToString(ciEn));
}
}
'SKKU DT' 카테고리의 다른 글
[SKKU DT] 23일차 -유니티 C# 계산기 만들기 (0) | 2023.11.29 |
---|---|
[SKKU DT] 22일차 -C# 연산자 정리(증감, 조건부, 할당 연산자), 조건문(If, Switch), 반복문 (0) | 2023.11.28 |
[SKKU DT] 20일차 -유니티 프로젝트 컨셉 정하기 (0) | 2023.11.24 |
[SKKU DT] 19일차 -유니티 셰이더 그래프 (2) | 2023.11.23 |
[SKKU DT] 18일차 -유니티 기본 테스트 -버튼을 눌러서 +, - 1씩 적용하는 유니티 씬 만들기 (1) | 2023.11.22 |