System.out.println("Hello, World");



Vector2D A;

Vector2D B;


A.Set(1,1);

B.Set(4,2);

Vector2D tmp = B - A;

tmp.normalize();

m_reDraw.x += tmp.x;

m_reDraw.y += tmp.y;


A와 B의 방향벡터를 구한다. 그후 정규화 시키고 A의 x에다 방향벡터 x를 계속 더해 주고

A의 y에다 방향벡터의 y를 계속 더해주면 직선으로 이동하게 된다.

Posted by 김마농

Rect

Rect 구조는 주로 2차원 작업에 사용되며 UnityGUI 시스템은 위치 카메라뿐만 아니라 광범위하게 사용된다.

new Rect(float left, float top, float width, float height)

  [사각형  위치   ]   [  너비    ] [    높이   ]

Posted by 김마농

1. Time.deltaTime

float Time.deltatime

초단위로 시간이 카운트되며 마지막프레임에서 완료된다.


2. Time.time

float Time.time

선언된 시점에서 카운트가 시작된다.


Start()에서 m_lastTime을 선언한다. 하지만 Start()에서 선언되었기 때문에 0이 된다. 


OnGUI에서 float time = Time.time 선언해줘서 카운트가 시작된다. 


time - m_lastTime > 0.1이 성립하기 위해서 0,1초 지난후 이미지가 이동하기 시작한다. 


만약 0.1초 대신 2를 집어넣었으면 2초후에 이동하게 된다.



위처럼 Start에서 m_lastTime 선언해주고 OnGUI에서도 float time = Time.time을 선언해준다. 


똑같이 m_lastTime은 start()에서 선언되었기 때문에 0이며 time은 계속 카운트된다.


그리하여 time - m_lastTime으로 0.1초 이상일때 이미지가 이동하게 된다. 


하지만 m_lastTime = time으로 선언해주었기 때문에 0이었던 m_lastTime은 0.1이 된다. 


time - m_lastTime > 0.1을 만족하기 위해 time은 계속 돌아가며 계속 0.1초마다 이미지가 이동하게 된다. 


만약 여기서 0.1 대신 2를 집어넣었다면 2초마다 이미지가 이동하게 되어 뚝 뚝 끊켜 보일 것이다.

Posted by 김마농

GameObject와 Component 관계를 이해하는 것이 매우 중요하다. 일단 간단히 정리하면 GameObject는 Component 객체를 담는 컨테이너(Container)다.

 

GameObject는 Transform 컴포넌트 객체를 한개 포함해야 한다. Transform 객체는 위치 정보, 스케일 정보, 회전 정보를 포함하며, 해당 객체를 활용해서 월드 공간에 객체를 위치할수 있다.

 

컴포넌트 객체 입장에서 게임 객체를 보면 모든 컴포넌트는 Component 파생 클래스다. Component 클래스는 자신이 포함된 게임 오브젝트 객체에 대한 참조를 가지고 있어야 한다. 즉 자신이 소속된 게임 오브젝트가 무엇인지 최소한 알아야 한다. gameObject 속성은 자신이 소속된 게임 오브젝트에 대한 참조값을 가진다.

 

실제 컴포넌트를 사용하는 과정에서 게임 오브젝트가 월드 좌표를 자주 사용된다. 이러한 이유로 Component 객체들은 gameObject 속성과 함께 Tranform 컴포넌트에 대한 참조를 제공한다. 위에서 언급했듯이 모든 게임 오브젝트는 한개의 Transform 객체를 가져야 한다는 내용을 기억해야한다. component 객체는 transform 속성이 바로 Transform 객체에 대한 참조 변수이다.

 

이론적으로 gameObject 속성은 널이 될수 없다. transform 속성은 필수적인 속성이지만 널이 될수도 있다.(이론적으로)

Posted by 김마농

1. Transform

- Scene의 모든 개체는 변화된다. 개체의 위치, 회전 그리고 스케일을 저장하기 위해 사용되어진다. 

  모든 변호나은 계층적으로 위치, 회전, 및 규모를 적용할 수 있는 부모를 가질 수 있다. 이것은 계층패널에

  서 볼 수 없었던고, enemerator를 지원하고 자식들을 통해서 루프할 수 있다.



변수 

 

position 

전체 공간에서 변환의 위치 

localPosition 

부모의 변환에 대해 상대적인 변환 위치 

eulerAngles 

오일러 각도에서의 회전 

localEulerAngles 

부모의 변환 회전에 대해 상대적인 오일러 각도에서의 회전 

right 

전체 공간에서 빨간 축의 변환 

up

전체 공간에서 초록 축의 변환 

forward 

전체 공간에서 파란 축의 변환 

 rotation

전체 공간에 저장된 변환의 위치 

localRotation 

부모의 변환 회전에 대해 상대적인 변환 회전 

localScale

부모에 대해 상대적인 변환 스케일 

parent 

부모의 변환 

worldToLocalMatrix 

지역공간에서 전체공간으로부터의 지점을 변환한 매트릭스(읽기 전용) 

localToWorldMatix 

전체공간에서  지역공간으로부터의 지점을 변환한 매트릭스(읽기 전용)

 root

계층 구조에서 최상위 변환을 되돌려라 

childCount 

변환이 가진 자식의 수 

lossyScale 

개체의 글로벌 스케일(읽기 전용) 



 함수

 

 Translate

방향과 거리의 변환을 움직이라 

Rotate 

회전을 적용한다. Z축, X축, Y축(순서대로) 

RotateAround 

변환을 회전하라 Axis 통해 지나가는 point 전체 좌표에 angle 각도 

LookAt 

[타겟]의 현재 위치에서 앞으로 벡터 점을 변환하고 회전한다. 

TransformDirection 

Direction 지역 공간에서 전체 공간까지 변환한다.

InverseTransformDirection

반대로 Direction 지역공간에서 전체 공간까지 변환한다. 

TransformPoint 

position 지역공간에서 전체 공간까지 변환한다. 

InverseTransformPoint

반대로 postion 지역공간에서 전체 공간까지 변환한다.

DetachChildren 

Unparents의 모든 자식 

Find 

자식을 찬는다. 

IsChildOf 

자식을 변환한다. 


Posted by 김마농

1. GameObject

- Object로 부터 상속 : 유니티 Scene들 안에서 모든 속성들을 위한 Base 클래스


 변수

 

 isStatic

 만약 게임오브젝트가 static이면 Editor는 오직 API를 명시한다.

 transform

 개체의 위치, 회전, 그리고 스케일

 rigidbody

 물리학 시뮬레이션을 통해 개체의 위치 제어

 camera

 카메라는 플레이어가 월드를 바라보는 장치

 light

 Light는 유니티 조명의 모든 요소들을 제어할 수 있다.

 animation

 애니메이션 컴포넌트는 애니메이션을 재생하기 위하여 사용된다.

 constantForce

 힘이 지속적으로 적용된다. 개체에 지속적인 힘을 적용하는데 사용되는 작은 클래스

 renderer

 렌더는 객체가 화면에 나타나게 만드는것.

 audio

 3D에서 오디오 소스를 표현하는 방식

 guiText

 GUI에서 텍스트 문자열이 표시된다.

 networkView

 네트워크 멀티 플레이어 게임의 재료

 guiTexture

 2D GUI에서 텍스쳐 이미지가 사용된다.

 collider

 모든 collider의 기본 클래스

 hingeJoint

 2개의 rigidbody의 HingleJoing 그룹과 함께 Hinge에 의해 연결된 이동 제한한다.

 particleEmitter

 입자 방출을 위한 스크립트 인터페이스

 layer

 게임 오브젝트 안에 있는 레이어

 active

 GameObjecr가 활성되었나 true/false 지정한다.

 tag

 태그는 게임 오브젝트를 규명하기 위해 사용된다. 사용하기전 매니저에서 선언한다.



Posted by 김마농

1. Standard Assets, Pro standard Assets, 혹은 Plugins 아래의 모든 스크립트 컴파일

-> 이 폴더내의 스크립트들은 다른 폴더의 스크립트를 "직접적으로 접근 할 수 없다.(참조 불가능)

클래스나 변수를 직접적으로 참조 할 수는 없지만 GameObjec.SendMessage를 통해 간접적으로 가능하다.


2. Standard Assets/Editor, Pro standard Assets/Editor 혹은 Plugins/Editor의 컴파일 

-> 메뉴 아이템이나 커스텀 위자드처럼 UnityEditor 네임 스페이스를 사용하는 에디터 코드를 작성하고자 한다면 이 폴더내에 스크립트가 있어야 한다.


3. Editor의 컴파일

-> 2번과 같이 UnityEditor 네임 스페이스를 사용하지만 표준 폴더(Standard Assets)이외의 위치에 있는 스크립트를 컴파일한다. 모든 이전 그룹을 참조가능하지만 4번 그룹은 참조가 불가능하다.


4. 그밖의 모든 스크립트의 컴파일

-> 위 그룹중 어디에도 속하지 않은 스크립트. 

이 그룹에 속한 스크립트는 1번 그룹의 모든 스크립트를 접근가능하게 되며 스크립트 언어간 교차호출이 가능하게 된다. 예를 들어 자바스크립트에서 C# 스크립트를 사용하고 싶다면 C#스크립트를 Standard Assets 폴더내에 자바 스크립트를 밖에 둔다. 이 상태에서는 자바스크립트가 직접 C# 스크립트를 호출 할 수 있다.

Posted by 김마농

유니티 내부의 스크립팅은 동작들(behaviours)이라 불리는 스크립트 오브젝트들을 게임 오브젝트들에 Attatch 시킴으로써 이루어진다. 스크립트 오브젝트를 내부의 서로 다른 함수들은 어떤 이벤트들상에서 호출된다.


1. OnGUI : 렌더링 및 GUI 이벤트를 처리한다.

- GUI.DrawTexture : 사각형내의 텍스쳐를 그린다.

- 매개변수

Position : 화면의 직사각형내에 질감을 그릴 수 있다.

image : Texture 표시

scalemode : 그것의 비율내에서 얻을 수 있는 비율에 맞지 않는 이미지를 확장한다.

alphaBlend : 알파로 표시

ImageAspect : 비율이 원본 이미지에 사용된다.


2. Start()

- Start는 라이프 사이클 중 딱 한번 호출된다. Awake와 차이점은 스크립트 인스턴스가 활성화된 경우에만 시작된다. Awake는 항상 어떤 기능을 사용하기전에 호출되어 초기화 시킬수 있다.

- 모든 스크립트 인스턴스는 Awake)가 호출된뒤 Star()가 실행된다.


3. Update()

- 매 프레임마다 호출되어 실행될 함수

- Update는 게임 행동의 여러 종류를 구현하는 가장 일반적인 함수

- 하나의 프레임이 렌더링 되기전에 호출된다.


4. Texture2D

- 2D 텍스쳐를 처리하기 위한 클래스


5. Resources.Load

- Resources 폴더내의 하위 경로에 저장된 파일을 불러온다. 하위 경로에 파일이 발견되면 파일을 반환하고, 그렇지 않은 경우 null이 반환된다. 하위경로는 Resources 폴더와 상대적인 경로를 가지며, 확장자는 반드시 제외되어야 한다. 

ex)Resources.Load("파일명")


6. Awake() -> Start() -> Update() -> LateUpdate()

Posted by 김마농



키보드를 제어하려면 InputMethodManager 객체를 사용한다. 이 객체는 getSystemService 메서드로 구할 수 있으며 다음 메서드로 키보드를 보이거나 숨긴다.


mImm.showSoftInput(View view, int flags);

mImm.hideSoftInputFromWindow(IBinder windowToken, int flags [,ResultReceiver resultReceiver]);


위와 같이 Show버튼을 누르면 키보드가 등장하고, Hide버튼을 누르면 키보드가 사라진다.



Posted by 김마농

코드에서 inputType 속성을 변경할때는 setInputType이나 setRawInputType 메서드를 호출하는데 인수로 세속성의 조합을 전달한다. 인수의 타입은 정수 하나이지만 속성 조합이 까다로우므로 실행 중에 변경하는 것은 쉽지 않으며 XML 문서의 inputType 속성으로 지정하는 것이 훨씬 쉽다. 


 inputType

설명 

none 

편집할 수 없는 문자열 

text 

단순 문자열 

texttimeMultiLine 

여러 줄 입력 가능한 문자열 

textEmailAddress 

email 주소 

textPassword 

비밀번호 

number 

숫자 

numberSigned 

숫자와 부호 

numberDecimal 

숫자와 부호와 소수점 

phone 

전화번호 

datetime 

날짜와 시간 


각 에디트박스를 선택하면 아래쪽에 소프트 키보드가 나타나는데 입력타입에 따라 키보드의 모양이 완전히 달라진다.





Posted by 김마농