관련 프로젝트 조사
관련 튜토리얼 조사
Game Object 가 매 프레임 이동하는 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SofaControlFour : MonoBehaviour {
void Start() {
Debug.Log("Start Game!");
}
void Update() {
Transform tr = GetComponent<Transform>();
tr.position = tr.position + new Vector3(0.01f, 0.01f, 0.01f);
Debug.Log(tr.position);
}
}
C#
복사
Component 불러오기
Component 내부 변수 불러오기
Vector3 변수
Start
Update
Awake 에서 부모 GameObject 의 children 이 모두 material 이 지정된 texture 로 바뀌고, Start 에서 children 의 material 이 또 바뀌는 코드
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SofaControl : MonoBehaviour {
public Material sofaMat;
void Awake() {
for (int i=0; i< transform.childCount; i++) {
GameObject child = transform.GetChild(i).gameObject;
child.GetComponent<MeshRenderer>().material = sofaMat;
}
}
void Start() {
}
void Update() {
}
}
C#
복사
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SofaControlFour : MonoBehaviour {
public Material sofaMat;
void Start() {
Renderer renderer = GetComponent<MeshRenderer>();
renderer.material = new Material(shader: Shader.Find("Diffuse"));
renderer.material.color = new Color(1, 0, 0, 1);
}
void Update() {
}
}
C#
복사
Awake
Awake vs. Start?
1. Awake 는 Start 전에 실행 → 이를 이용하여 두 단계 초기화가 가능함.
2. Awake 는 Start 와 달리 스크립트 비활성화 시에도 호출됨.
SerializeField?
Private: 다른 스크립트 및 Inspector 에서 접근이 불가능
Public: 다른 스크립트 및 Inspector 에서 접근이 가능
SerializeField: 다른 스크립트 접근 불가능, Inspector 접근 가능
이름에 serialize 가 붙은 이유는 직렬화 작업을 통해 Inspector 창으로 정보를 전송하여 볼 수 있게 하기 위해서임.