• Instantiateしたオブジェクトに名前をつける(Clone問題)
  • カラーネーム一覧
  • メインプログラムの初期状態(スケルトン)
  • 別スクリプトにある関数を実行(返り値なし)
  • 別スクリプトにある関数の返り値ゲット
  • デバッグ常時表示
  • ランダム
  • スローモーション
  • 別オブジェクトとの方向と距離
  • ゲームタイマー
  • オブジェクトを指定方向に向かせる
  • 別オブジェクトの当たり判定を管理オブジェクト側で扱う

  • Instantiateしたオブジェクトに名前をつける(Clone問題)

Nest = Instantiate(skeleton_N, Vector3(-3, 1.0f, 5.0f), Quaternion.identity);
Nest.name = "ske_N";

  • カラーネーム一覧

カラーネーム 147色
16進数表記なのでちょっと変換するのがちょっと面倒だけどいちいち画面見ながら色指定するよりよっぽどマシ
 

  • メインプログラムの初期状態(スケルトン)

​​​メインプログラム部分は毎回だいたい同じなので、コピペで始められるようにしとく
(Unity5.3.2f1時点)


#pragma strict
var GameTime : float = 0.0f;
private var DebugMode : int = 0;
static var GameStep : int = 0;

private var Player : GameObject;
private var Enemy : GameObject;

private var PlAni : Animator;

var PlayerVoice1 : AudioClip;

private var MainCamera : Camera;

private var GameMessege : UI.Text;

private var UITextA1 : UI.Text;
private var UIImageA1 : UI.Image;

private var BGMSource : AudioSource;
private var SESource : AudioSource;

var DspButton : int = 0;


function Button1(){
    if(DspButton){
        //PlAni.SetBool("a1", true);
        //SESource.PlayOneShot(AtkVoice1, 1.0f);
    }
}    //print("Button1");

private function initValue(){
    DebugMode = 1;
    GameStep = 0;
    if(DebugMode) GameStep = 0;
        
    //Player = GameObject.Find("player").gameObject;    
    //PlAni = GameObject.Find("player").GetComponent(Animator);    

    //UITextA1 = GameObject.Find("Canvas/Text1").GetComponent(UI.Text);
    //UIImageA1 = GameObject.Find("Canvas/Image1").GetComponent(UI.Image);

}

function Start(){
    initValue();
}

function Update(){
    GameTime += Time.deltaTime;

    if(DebugMode){

    }
    
    if(GameStep == 0){
    }
    else if(GameStep == 1){
    }
    else if(GameStep == 2){
    }
    else if(GameStep == 3){
    }
    else if(GameStep == 4){
    }
    else if(GameStep == 5){
    }
    else if(GameStep == 6){
    }
    else if(GameStep == 7){
    }
    else if(GameStep == 8){
    }
    else if(GameStep == 9){
    }
    else if(GameStep == 10){
    }
    
    
    
    
}

function OnGUI(){

    if(DebugMode){
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*5, Screen.height/8*0, Screen.width/20, Screen.height/20),GameStep.ToString());
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*4.5, Screen.height/8*0, Screen.width/20*3, Screen.height/20),GameTime.ToString());
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*3, Screen.height/8*0, Screen.width/20*3, Screen.height/20),Time.frameCount.ToString());
        if(GUI.Button(Rect(Screen.width/2 - Screen.width/10*5, Screen.height/8*0.8, Screen.width/20*2, Screen.height/20), "Restart")) Application.LoadLevel(0);
    }

    if(GameStep == 0){
    }
    else if(GameStep == 1){
    }
    else if(GameStep == 2){
    }
    else if(GameStep == 3){
    }
    else if(GameStep == 4){
    }
    else if(GameStep == 5){
    }
    else if(GameStep == 6){
    }
    else if(GameStep == 7){
    }
    else if(GameStep == 8){
    }
    else if(GameStep == 9){
    }
    else if(GameStep == 10){
    }


}

 

  • 別スクリプトにある関数を実行(返り値なし)

ゲームオブジェクトNTManagerに登録してあるスクリプトのpublic関数Test2()を、
ゲームオブジェクトShipに登録してあるスクリプトの中から呼び出す場合
NTManagerスクリプト側
print("aaa");
}

Shipスクリプト
public var NTMan : GameObject;
NTMan = GameObject.Find("NTManager").gameObject;
からの
N
TMan.SendMessage("Test2");

  • 別スクリプトにある関数の返り値ゲット

ゲームオブジェクトNTManagerに登録してあるスクリプトのpublic関数Test()を、
ゲームオブジェクトShipに登録してあるスクリプトの中から呼び出す場合
NTManagerスクリプト側
public function Test(){
return(isMaster);
}

Shipスクリプト
public var NTMan : GameObject;
NTMan = GameObject.Find("NTManager").gameObject;
からの
print(NTMan.GetComponent(NTManager).Test());
※いつものSendMessege()では返り値は返ってきませんという噂※

  • デバッグ常時表示

よく使う変数をいちいちDebug.Log();してらんないので常時画面に表示するようにする
var gameStep : int = 0;
var DebugMode : int = 0;
function OnGUI() {
    if(DebugMode){
        GUI.Button(Rect(Screen.width/2 - Screen.width/10*5, Screen.height/8*0, Screen.width/20, Screen.height/20),gameStep.ToString());
    }
}

  • ランダム

var rndi : int = Random.Range(1, 10);
int:最小以上、最大<未満>の値

var rndf : float = Random.Range(0.0f, 10.0f);
float:最小以上、最大<以下>の値

  • スローモーション

参考:Unityでスローモーション 
Time.timeScale = 0.5f;
オブジェクトのrigidbodyのInterpolateにチェックを入れるとスローモーションでもカクカクしない

  • 別オブジェクトとの方向と距離

方向(ベクトル)
var distanceV : Vector3 
= Skeleton.GetComponent(Rigidbody).transform.position - Player.GetComponent(Rigidbody).transform.position;
方向(単位化)
var distanceVN : Vector3 = distanceV.normalized; 
距離
var distance : float = distanceV.sqrMagnitude; 

  • ゲームタイマー

ゲーム進行用タイマー(フレームレート込)
var GameTime : float = 0.0f;
GameTime += Time.deltaTime;
フレームを取る場合は
if((Time.frameCount % 120) == 0){
}
とかなんとか

  • オブジェクトを指定方向に向かせる

ミサイルをプレイヤーに向かせ続けるとか(フレームまたがってじんわり変化する系)

var Player : GameObject;
Player = GameObject.Find("Dimples").gameObject;    
this.transform.rotation = Quaternion.Slerp(this.transform.rotation, Quaternion.LookRotation(Player.transform.position - this.transform.position), 0.1f);    

※自分自身はthis.***


 

  • 別オブジェクトの当たり判定を管理オブジェクト側で扱う

・(例)プレイヤーオブジェクト側で検知した当たりを親側に渡す

★プレイヤーオブジェクト側
var Master : GameObject;
function Start () {
    Master = GameObject.Find("GameMaster").gameObject;//←親のオブジェクトを取得
}
function OnCollisionEnter(collision : Collision){ 
   Master.gameObject.SendMessage("setDamage", collision);//←メッセージで親側にコリジョンごと渡す
    if(collision.gameObject.name == "Floor"){
        //Debug.Log("Hit the floor");//←プレイヤー側でなにかしたい場合
     }else if(collision.gameObject.name == "Wall"){
        //Debug.Log("Hit the wall");//
←プレイヤー側でなにかしたい場合
    }
}
★管理側

function setDamage(collision : Collision){
    print(collision.gameObject.name);
}
 

最終更新:2016年08月18日 16:41
添付ファイル