https://docs.unity3d.com/kr/2021.3/Manual/UsingTheEditor.html
Game- 디바이스의 스크린화면과 같다
씬 뷰- 가상 3d 공간: 작업하는 공간: 물체를 넣고 편집
Hierachy에 있으면 씬 뷰에 반드시 있다.
프로젝트 창에 있으면 파일이다.-유니티에서 관리하는 에셋 라이브러리
GameObject
-GameObject 클래스는 씬 내에 존재할 수 있는 모든 요소를 나타내는데 사용된다.
-클래스이므로 인스턴스로 존재해야한다.
-즉 씬의 모든 요소는 GameObject의 인스턴스이다.
-Play 버튼을 누르는 순간 Hierachy의 모든 요소는 '인스턴스화'된다: 이 때 메모리에 올라간다.
ex)Main Camera도 GameObject의 인스턴스이다.
-게임 오브젝트의 모양과 게임 오브젝트의 기능을 결정하는 기능적 컴포넌트의 컨테이너 역할을한다.
-모든 GameObject에는 Transform이 있다.(위치정보는 있어야 하기 때문)
-비활성화 상태는 인스턴스가 사라진 것이 아니다.(Hierachy에는 있다)
https://docs.unity3d.com/kr/2021.3/Manual/class-GameObject.html
스크립트
-사용자 정의 컴포넌트를 생성할 수 있다.(스크립트: 컴포넌트이다!)
위의 경우에 메인 카메라는 transform, camera, audio listener 3개의 컴포넌트를 가진다.
컴포넌트는 클래스이며, play(실행)시에 인스턴스화 된다.
*모든 클래스는 컴포넌트가 될수있다?=> (x)
-> MonoBehaviour를 상속받은 클래스만 컴포넌트가 될 수 있다: GameObject에 부착될 수 있다.
-MonoBehaviour를 상속받은 클래스 : new 키워드 사용할 수 없다. -> 생성자 호출(x)
: MonoBehaviour를 상속받으면 play할때 인스턴스화 되므로 따로 new 키워드를 쓰면 안되는 것이다.
https://docs.unity3d.com/kr/2021.3/Manual/CreatingAndUsingScripts.html
-컴포넌트를 부착한다 -> 인스턴스가 생겨난다.
LifeCycle
이벤트 함수의 실행순서- unity 스크립트를 실행하면 사전에 지정한 순서대로 여러 개의 이벤트 함수가 실행된다.
Awake()
-인스턴스화 될 때 한번만 호출됨.
-생성자 같은 역할
https://docs.unity3d.com/ScriptReference/MonoBehaviour.Awake.html
GameObject는 Monobehaviour를 상속받는 클래스가 아니므로 생성자로 쓰일 수 있다.
인스펙터에 값을 할당: Assign: public으로 선언되어야한다.
[SerializeField] //애트리뷰트를 사용하면 private 멤버도 인스펙터에 노출할 수 있다.
private bool isTest;
리치텍스트
https://docs.unity3d.com/kr/560/Manual/StyledText.html
태그
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class App : MonoBehaviour
{
public Hero hero;
// Start is called before the first frame update
void Start()
{
Debug.Log(hero);//Hero 클래스의 인스턴스
hero.SayHello();
//코드로 찾아서 집어넣기 = Assign(값할당)
//활성화 되어 있는 게임 오브젝트를 찾을 수 있음
GameObject go = GameObject.Find("Hero");
Debug.Log(go);//Hero 게임 오브젝트의 인스턴스
this.hero = go.GetComponent<Hero>(); //특정 게임 오브젝트의 T타입의 컴포넌트를 가져올 수 있다.
//타입으로 찾을 수도 있다.
// this.hero = GameObject.FindAnyObjectByType<Hero>();
}
// Update is called once per frame
void Update()
{
}
}
Order in Layer
-우선순위
https://docs.unity3d.com/kr/530/ScriptReference/Input.GetMouseButtonDown.html
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RouletteController : MonoBehaviour
{
public float rotAngle = 0;
public float dampingCoefficient = 0.96f;
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
//왼쪽 버튼을 눌렀다면
if (Input.GetMouseButtonDown(0))
{
Debug.Log("왼쪽버튼 클릭");
rotAngle = 10;
}
this.transform.Rotate(0, 0, rotAngle);
rotAngle *= dampingCoefficient;//감쇠계수를 곱해 angle을 줄여라
Debug.Log(this.rotAngle);
}
}
https://github.com/meltingmelvin/Roulette
'유니티 기초' 카테고리의 다른 글
Unity-Prefab, 예제-랜덤한 위치에 화살생성, hp게이지 만들기 (0) | 2023.08.02 |
---|---|
Unity-Player Setting에서 Deafult Orientaiton (0) | 2023.08.02 |
Unity- CatEscape 예제, time (0) | 2023.08.01 |
Unity-자동차 스와이프 예제2-UI, 사운드추가 (0) | 2023.08.01 |
Unity- 자동차 스와이프 예제 (0) | 2023.08.01 |