Unity5でスクリプト実践2

Unity5でスクリプト実践の続きです。日誌なので細かいところは適当です。

Unity5でスクリプト実践2 項目

MonoDevelopの起動について
visualStadioでスクリプトが開かれる場合は<Assets>メニュー内から<Sync MonoDevelop Project>を選ぶ
  1. スクリプトファイルを更に変更してみる
  2. Unityでメソッド(引数)を実践してみよう
  3. 戻り値(返値)のあるメソッド
  4. 復習問題 メソッドを呼び出す
  5. 復習問題 フィールドの値でif else分岐
計算などはこれで試してみてください。
<<Unity5でスクリプト実践にもどる。
次回からは実際にゲームオブジェクトを動かします。
>>Unity5でゲームオブジェクト実践
<<メニューにもどる

スクリプトファイルを更に変更してみる

mesodo_unity.JPG

voidはメソッド→機能部なので、機能部分に記述していきます。下画像参照
new_text.JPG
text.text="文字";

メモ Unityではシーンに配置した部品は、すべて対応するクラスのインスタンスとして用意されている。
前にあるtext・・・これは、テキストを表示しているTextコンポーネントが入っている変数です。
Textコンポーネントも「Text」というlクラスのインスタンスとして用意されているのです。既にnewされていると考える

"文字"の部分に好きな言葉を入れてください。

実行すると変更され表示します。

以降、練習にこのテキストを使って計算結果を表示します。



表示されない原因
サイズが合ってないと表示されない
no_text.JPG
スクリプトの適応を「main camera」ではなく、Textオブジェクトに対して行っている


参考


Unityでメソッド(引数)を実践してみよう

C#簡易入門5・・・voidがついているので戻り値(返値)は無いことがわかる。引数のみを使った関数の問題
インスタンスされたメソッドを使わない※Aので戸惑うかもしれないがシンプルに考える。

【1】「【2】の ShowMsgメソッド<関数処理>を呼び出して引数<string型 変数名s>に値 【String msg="文字"】を渡す」
void Start(){
String msg="文字";
ShowMsg(msg);
 
}
 
ShowMsg(msg);  ・・・ メソッド名(引数に渡す変数)同じクラス内にあるメソッドを呼び出す場合の書き方



【2】 ShowMsgメソッド テキストコンポーネントに値を入れて表示させる関数処理を担う
void ShowMsg(string s){

text.text=s;
 
}


showmsg.JPG


結果は同じように"文字"が表示される。


※A
通常は、他のクラスから呼び出すことが多い、書き方は
インスタンス名.メソッド名(引数に渡す変数)
です

インスタンスは普通、変数などに代入して使います。その変数名の後にドットを付けてメソッド名を記述すればいいでしょう。
これで「そのインスタンスにある指定のメソッドを呼び出す」という意味になります。


フィールドもプロパティと同じように
インスタンス名.フィールド名/プロパティ名
という形で利用できます。


戻り値(返値)のあるメソッド

myscriptを更に変更してみましょう。

text_modori.JPG

【1】
「【3】Goukeiメソッド<関数処理>を呼び出してnumの値を渡して計算後、
 【2】の ShowMsgメソッド<関数処理>を呼び出して引数<string型 変数名s>に値 【String msg="計算結果"】を渡す」
【3】で数値として取得した計算結果は、テキスト型としてmsgに代入され【2】でテキストコンポーネントに利用され表示される。


void Start () {
  int num=10;
       string msg = num+"の合計は、"+Goukei(num)+"です。";
   ShowMsg(msg);
}

【2】 ShowMsgメソッド テキストコンポーネントに値を入れて表示させる関数処理を担う

void ShowMsg(string s){
    text.text=s;
    } 

【3】Goukei メソッド 計算をする関数処理も担う。voidがついていないので戻り値(返値)を出す。
int Goukei(int n){
    int total=0;
    for(int i = 1; i<=n;i++){
        total+=i;
    }
    return total;
    }



return total;

このreturnはそこでこのメソッドを抜けて、メソッドを呼び出した呼び出し元に処理を戻す働きをします。

rtn.jpg

return後に値(例:total)を記述しておけばその値が戻り値(返値)として返されます。



modorichi.JPG

追記 メモ

C#簡易入門6

詳細をみる

復習問題メソッドを呼び出す

シンプルに考えよう。プログラムは、いろんな例を見てアルゴリズムを覚えること
 
メソッド(関数)を呼び出す 
<略>
void Start(){
 
 my_Method();

 }

void Update(){
 }


 void my_Method(){
 Debug.Log("メソッド(関数)「my_Method」を呼び出しました。")
//メッセージをUnityのconsoleに表示する
 }

プログラムを書く上での原則規則として、同じ処理をするプログラムは1ヵ所にしか書かない。
開発規模が大きくなってくると複数に同じ処理をするプログラムがあると修正する際にミスが発生しやすい。
この為にもメソッドというものがあることを忘れないように。

複数の箇所でメソッドを呼び出す。

<略>
void Start(){
 
 my_Method();

 }

void Update(){
 my_Method();
 }


 void my_Method(){
 Debug.Log("メソッド(関数)「my_Method」を呼び出しました。")
//メッセージをUnityのconsoleに表示する
 }

復習問題 フィールドの値でif else分岐

<using略>
 
 public class HelloUnity:MonoBehaviour{

   bool anser =true;
  //フィールドです。 bool型はYESかNO true falseのみの値です。ここではtrueにします。

 void Start(){
 
  Debug.Log("Hello World");

  }

 void Update(){

   if(anser){  //anserがtrueのときにメッセージをUnityのconsoleに表示します。 ※1
     Debug.Log("anserはtrueです。");
   //メッセージをUnityのconsoleに表示する
    }
   }
 }

※1の結果はanserはtrueです。とUnityのconsoleに表示されます。 

  • 最終更新:2016-03-02 19:44:14

このWIKIを編集するにはパスワード入力が必要です

認証パスワード