가끔 유니티로 작업하다보면 Unity Editor에서 관리자 권한으로 켜야할 때가 있다.

그럴때 Unity hub를 관리자권한으로 실행해봤자 Editor까지 권한이 이양되지 않거나 에러가 생기게 된다.

방법은 다음과 같다.

 

Windows 명령 프롬프트 사용

1. 명령 프롬프트를 관리자권한으로 켠다.

2. 명령 프롬프트에 다음을 입력하여 Unity 프로젝트를 시작한다.

-> "<PathToEditor>" -projectPath "<PathToProject>"

 

명령 프롬프트 사용 예시.

 

3D 오브젝트의 Material 색을 변화시키고 싶을 때 아래 코드를 사용한다.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TestRenderer : MonoBehaviour {

public Renderer m_Renderer;

float m_R = 0.4f;
float m_G = 0.5f;
float m_B = 0.3f;
float m_Alpha = 1f;

    void Start(){
        m_Renderer.material.color = new Color(m_R, m_G, m_B, m_Alpha);
    }

    void Update(){

        }
}




유니티의 여러가지 시간 측정 방법중 한가지인 스탑워치 사용하기에 대한 방법이다.

using System.Diagnostics;
using debug = UnityEngine.Debug;
public class TimerScript : MonoBehaviour {

Stopwatch sw = new Stopwatch();
float time;

    void Start(){
        sw.Start();
    }

    void Update(){
        time = sw.ElapsedMilliseconds;
        if(time>5000){
            sw.Stop();
            debug.Log("Time: "+time);
        }
    }




Dropdown은 UI의 기본기로써 여러 목록의 선택지를 쉽게 골라주게 하기위해 Unity에서 기본으로 제공하고 있다.

아래 소스코드는 Dropdown의 목록 생성 및 선택된 value에 대한 출력을 다룬다.


[참고] Dropdown 리스트 중 하나를 선택하면 dropdown.value의 값이 선택지에 대한 배열의 값으로 생성이 된다.

가령 2번째 리스트를 선택한 경우 dropdown.value = 1 이 된다. 이를 이용하여 선택지를 알아내고 값을 응용하여 원하는 셀렉기능을 구현하면 된다.

/*
 * ----------------------------------------------------------------------------
 * "THE BEER-WARE LICENSE" (Revision 42):
 * <ggkids9211@gmail.com> wrote this file. As long as you retain this notice you
 * can do whatever you want with this stuff. If we meet some day, and you think
 * this stuff is worth it, you can buy me a beer in return Hyunjun Kim.
 * ----------------------------------------------------------------------------
 */

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class DropdownExample : MonoBehaviour{
[Header("Dropdown")]
public Dropdown dropdown;

	void Start () {
		SetDropdownOptionsExample();
	}

	void Update () {

	}

private void SetDropdownOptionsExample() // Dropdown 목록 생성
    {
        dropdown.options.Clear();
        for(int i = 1; i < 11; i++) //1부터 10까지
        {
            Dropdown.OptionData option = new Dropdown.OptionData();
            option.text = i.ToString() +"갯수";
            dropdown.options.Add(option);
        }
    }

public void SelectButton() // SelectButton을 누름으로써 값 테스트.
	{
		Debug.Log("Dropdown Value: "+ dropdown.value + ", List Selected: " + (dropdown.value + 1));
	}
}





유니티 하이라키창에 빈 게임 오브젝트를 만든 후 다음의 스크립트를 추가한다.



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class CubeControl : MonoBehaviour {


// Use this for initialization

void Start () {

                GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);    //큐브 오브젝트 생성

cube.transform.position = new Vector3(0, 0, 0);                                 //큐브 포지션 설정

}

// Update is called once per frame

void Update () {

}

}




실행시켜보면 0,0,0좌표에 큐브가 생성된 것을 확인할 수 있다.


게임오브젝트를 큐브뿐만아니라 GameObject.CreatePrimitive(PrimitiveType.Cube); 에서 Cube를 Plane, Sphere, Capsule, Cylinder 등으로 바꾸면 여러가지 


오브젝트로 실행이 가능하다.


그럼 조금 더 업그레이드 해서 큐브를 무한대로 생성시켜보자.



using System.Collections;

using System.Collections.Generic;

using UnityEngine;


public class CubeControl : MonoBehaviour {

int i = 0;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

i=i+5;

GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

cube.transform.position = new Vector3(i, 0, 0);

}

}


이렇게되면 업데이트 메서드가 호출될때마다 x축으로 5의 간격으로 큐브가 생성될 것이다.




 



+ Recent posts