2014年8月5日 星期二

Unity AddComponent ,GetComponenet , active

本範例可以對該腳本底下的物件進行新增Component,以及active = false 的關閉物件

以腳本範例: 放入音頻文件即新增component然後把文件放到component底下的屬性中
腳本控制:

using UnityEngine;
using System.Collections;

public class Sound : MonoBehaviour {
 private AudioSource audios;
 public AudioClip AudioFile;
 // Use this for initialization
 void Awake(){
  audios = gameObject.AddComponent("AudioSource")as AudioSource;
  audios.clip = AudioFile;
 }
 void Start () {
  
 }
 
 // Update is called once per frame
 void Update () {
  if(Input.GetKey(KeyCode.W)){
   audios.Play ();
   
  }
  else{
   audios.Stop();
  }
 }
}
其中在最上方加入AudioClip,將音樂丟進去之後, 在Awake中把AudioFile丟入 audios.clip這個內部屬性中, 所有的內部屬性都可以透過" . "找到,請注意控制的資料型別, 於是執行遊戲就可以看到圖片中的效果了.

active 可以將遊戲本來的物件給關閉,像是:
,只要使用active即可,腳本如下,假設要關閉某樣物件:
using UnityEngine;
using System.Collections;

public class Sound : MonoBehaviour {
 public GameObject obj;
 // Use this for initialization
 void Awake(){
     obj.active = false; 
 }
 void Start () {
        }
 void Update () {
 }
}
這樣就可以把放入的 obj 給關閉

GetComponent 假設取得腳本 Jump :
using UnityEngine;
using System.Collections;

public class a : MonoBehaviour {
 private Jump jp;
 // Use this for initialization
 void Start () {
  jp = GetComponent();
  print (Jump.print);
 }
 
 // Update is called once per frame
 void Update () {
 
 }
}
在 Jump的腳本:
using UnityEngine;
using System.Collections;

public class b : MonoBehaviour {
 public String print = "HelloWorld";
 // Use this for initialization
 void Start () {
  
 }
 
 // Update is called once per frame
 void Update () {
 
 }
}


沒有留言:

張貼留言

© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014