0617
(1) 유니티 엔진 시작하기
위치정보 추적 (vr,ar) 로봇팔 가지고
1. 프로그램 설치
유니티허브설치
유니티엔진설치(2019.3.0.a5)
비쥬 2019
2. 계정 생성
유니티계정 : 유니티엔진
마이크로소프트계정 : 비쥬 2019
구글계정 : 행아웃, 기타
(2) 유니티는 언리얼에 비해서 가벼움. 최소 5MG로 잡고도 게임을 만들 수 있음
언리얼 같은경우는 기본 100MG
적을 어떻게 움직일까 - 인공지능(게임쪽)
에디터 프로그램은 C# 사용
- 내려받기
https://unity.com/kr
설치
열기
비쥬 2019 선택
안드로이드 빌드 서포트 체크선택
(3) 유니티엔진 기초
c++로 코딩해도댐 ㅋ
==========================================================
1) 메인뷰 =>
하이라키 -> 게임오브젝트 (유니티에서 제일 많이쓰이고 가장 기본적인 작은 객체임)
-> 할당되는 메모리 사이즈를 볼 수 있음
디렉션라이트 -> 에 의해서 화면이 밝게보이는것
2) 씬뷰 (디자이너들이 많이씀)
- 유니티에서 씬은 맵또는 레벨에 해당
- 씬 뷰는 레벨을 구성하기 편하게 볼수있는창임
메인카메라에 c# 스크립트를 붙이고 코딩을하면 화면이 움직임
5)? 인스펙터창
게임오브젝트 또는 project 창에서 선택한 에셋의 상세정보를 보여주는 창
트랜스폼(컴포넌트) - 위치정보를 가지고 잇음 (가장작은게임정보에는 꼭 들어있음)
애드컴포넌트 - 원하는 기능 추가
ex) mash filter - (매쉬)정점부터 시작해서 점점,,폴리곤,, 나무,,, 캐릭터,,,,
형태를 띈 물체
- 캐릭터를 만들기위해 모바일에서 폴리곤이 1500개정도 됨.
6) 콘솔 창
==========================================================
리소스 - unity AssetStore
얼굴인식 - openCV
[조작법]
5.2 C# 스크립트만들기
Assets -> 우클릭 -> 크리에잇 --> c#스크립트
=> 만들어지자마자 파일명을 바꾸는 것이 좋음
가장 기본적인 조작법
우클릭한 상태에서 마우스 드래그 : 카메라 중심으로 상하좌우 ㅚ전
마우스 휠 : 전후 이동
방향키 : 전후좌우
1. 오브젝트 생성하기
하이라키 마우스 우클릭 생성하기 -> 빈오브젝트, 큐브, 스피어 등 게임오브젝트를 생성
포지션 1 = 1m
로테이션 1 = 1도 ,90 = 90도
매쉬필터 - 정점으로 폴리곤을 만든 정보들을 가지고 있음
매시랜더러 - 화면에 뿌리기
박스콜리더 - 충돌박스 - 물리가 적용되는 컴포넌트,충돌하기위한 매개체
shader - 독특한 옷감을 만들기위해 필요
충돌처리 ㅣㅅ시시 시바 ㄹㄹ ㄹ
리지드바디는 무거움 물리적용
나무 - static mash라고 해서 정적임 절대 움직일 일이 없음 colider만 가지고 있음 됨
==========================================================
[좌표계]
걍 드래그앤드랍 자면 자식 부모 구조가 됨 -> 같이 움직임
월드좌표 - 절대불변
로컬좌표 - 내자신의좌표
자식들은 로컬좌표가있음
크게매핑하면 퀄리티가 낮음
c# 스크립트를 게임오브젝트에 드래그앤드롭하면 연동됨.
==========================================================
Start() 시작할때 무조건 나오는 함수
Update() 매 틱마다
transform.Translate(new Vector3(0.0f, 0.0f, 0.1f)); - Update()
-> transform = 컴포넌트 (이동, 스케일, 로테이션)
C# 프로그래밍 언어
bool IsFlag = true;
Debug.Log(IsFlag.ToString()); - Star()
Log 인자는 스트링 -> 이런식으로 쓰고 저장하면
전역/지역
배열
int[] iArray1;
new로 할당...................
(필드/멤버)
==========================================================
ex) Debug.Log - 각각의 iArray로 표시하고 누적값 표시하기
void Star(){
int[] iArray;
iArray = new int[10]
iArray[0] = 3;
.
.
.
int iSum = 0;
for(int i=0; i < 10; ++i){
iSum += iArray[i];
}
==> Debug.Log("iArray : " + iArray[i]);
==========================================================
int[] iArray = new int[2];
.
.
iArray = new int[5];
(5개~~~)
==>문제없는 코드(c#에서는 괜찮음. garbage collector가 관리하고있다가 스스로 지워짐)
, 위에있는 2개가 사라짐 (댕글링포인트 c++에서는위험!!)
==========================================================
[문자열]
namespace MySystem{
class Program{
void Start(){
string s1 = "C#";
string s2 = "Programming".;
char c1 = 'A';
char c2 = 'B';
string s3 = s1 + " " + s2;
}
}
}
==========================================================
[열거형] 유니티에서는 public을 쓰면 유니티에서는 화면에 보여짐!
public enum Category{
Cake, //0
IceCream, //1
Bread //2
}
ex) class Program
enum City
Seout,
Daejun,
Busan = 5,
Jeju = 10
void Start()
City myCity; //열거형 변수
myCity = City.Seoul;
//enum을 int로 변환(Casting)하는 방법.
//(int)를 앞에 ㅣ정.
int cityValue = (int)myCity;
if(myCity == City.Seoul) //enum 값을 비교하는 방법
Console.WriteLine("Welcome to Seoul");
ex2)
//외부에서 공개안하겠다 -> private
private enum enStat
{
Attack,
Defence,
HealthPoint,
ManaPoint,
EXP,
Max
}
//스탯은 대부분다 float 형
private float[] _fMyStat;
// Start is called before the first frame update
void Start()
{
_fMyStat = new float[(int)enStat.Max];
_fMyStat[4] = 13.0f;
//_fMyStat[(int)enStat.EXP] = 13.0f;
}
==========================================================
[foreach] - 배열이나 컬렉션에 주로 사용 (STL과 비슷)
- for문처럼 배열의 끝을 따로 정해주지않아도 배열으 끝에 도달하면 자동종료
- 속도는 foreach가 훨씬 빠르나 무조건 for을 써야할 떄가있음 (List, Collection 중간 제거?)
void Start()
{
string[] array = new string[] { "AB", "CD", "EF" };
foreach(string s in array)
{
Debug.Log(s);
}
}
'Unity' 카테고리의 다른 글
0620 GyroBall 2 (0) | 2019.06.20 |
---|---|
0619 GyroBall (0) | 2019.06.19 |
0619 Flappy Bird (0) | 2019.06.19 |
0618 Flappy Bird (Mini Game) (0) | 2019.06.18 |
0618 유니티기초2 (0) | 2019.06.18 |