質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

4612閲覧

【Unity】static メソッドが実行されない。

Namin

総合スコア13

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2016/05/24 16:12

Unity(JavaScript)で2Dゲームを作っています。
ゲーム中いろいろなシーンでグラフィックをフェードイン、フェードアウトする処理を行うのですが、
これを各シーンでメソッドを書くより、static classにすると良いだろうと考え以下のコードを書きました。

static class FIO{
function Img (img:UI.Image,IN:boolean,sec:float) {
//引数は(対象グラフィック , フェードイン/フェードアウト , 処理秒数)
Debug.Log("FIO/Img");
var t:float;
var u:float;
while(t<1){
t+=Time.deltaTime/sec;
u=t;
if(!IN)u=1-t;
img.color.a=u;
yield;
}
}
}

これをそれぞれ適切なタイミングで呼び出すようにしたのですが、
なぜか実行されません。
メソッド冒頭のDebug.Logすら実行されません。
呼び出し元のスクリプトは
Debug.Log("FadeOut");
FIO.Img(targetImg,false,0.2);
のように記述しており、こちらのDebug.Logは実行されます。

処理が実行されないだけで、
コンパイルエラーも実行時例外も発生しないので、理由がわかりません。

ご教示いただけるとありがたいです。
よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Img()内で__yield__キーワードを使われているので、コルーチンとして関数を呼ぶ必要があるのではないでしょうか。
下記の例ではStartCoroutine()を使って関数を実行しています。

JavaScript

1var img:UI.Image; 2 3function Start () 4{ 5 StartCoroutine( FIO.Img( img,false,1.0 ) ); 6}

投稿2016/05/24 22:34

urahimono

総合スコア714

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Namin

2016/05/24 23:01

なるほど! UnityScriptにおけるyieldはコルーチンをさほど意識しなくても適当に使えてしまう印象で、 ついきちんと勉強しないままになっていました..... ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問