読者です 読者をやめる 読者になる 読者になる

自己満足なぶろーぐ

自分用メモとしてつかってます。たま~に記事を書くことも。

【Unity】ホームボタンでアプリを一時停止させる

OnApplicationPause
スマホのホームボタンや別のタブを開いたりしたときに呼ばれる関数。

これと停止を組み合わせれば一時停止をさせることができる…はず。


void OnApplicationPause (bool stop){
   //ホームボタンや別タブを開いたとき呼ばれる
  if(stop){
     停止させる処理かく
  }
   //再開時に呼ばれる
  else{
  再開処理かく
  }
}


【参考】

 

 

【Unity】マウスイベント OnMouseDownやOnMouseOver

OnMouseDownやOnMouseOverなどを

使うときはオブジェクトにColliderがアタッチされていないと呼ばれない。

 

【参考】

【あわせて読むとお得】

【Unity】AnimetorとSpriteRenderを分けてアニメ

AnimetorとSpriteRenderを分けてアニメ

 

・CreateでAnimatorControllerを作成

・AnimetorをAddComponetで追加し、作成したAnimatorControllerを設定

f:id:miya033:20160612120025p:plain

 

適当な画像をシーンにドロップ。

次に、こいつをok(1)の子オブジェクトにする

 

 

アニメ作成手順

f:id:miya033:20160612121833p:plain

 

上記画像①~③手順を繰り返してアニメを作成していく

 

 

 

親オブジェクトにSpriteRenderがなくてもアニメが再生ができるため、スクリプト

 

 

 

enum外部から呼び出す

enumを外部から呼び出すことはできないか探していたらなんかできたので、メモ

//呼ばれる側 public class : Yobareru { public enum STATE{ATTACK,MOVE}; STATE statelist;
void Update () { switch (statelist) { case STATE.ATTACK: Attack (); break; case STATE.MOVE:
             Move(); break; } } public void Set(STATE _state){ statelist = _state; } }
//---------------------------------- //呼び出し先 public class Yobu : MonoBehaviour { public GameObject obj; Yobareru yobareru; //--------------------------------- void Start () { yobareru = obj.GetComponent<Yobareru> (); }


void Update(){
yobaretu.Set(yobareru.ATTACK);
        }

}



【参考】

列挙型(enum)を別classから参照する - arketブログ

 

 

[2016/8/13]

こんなのでも呼べました

public enum STATE{ATTACK,MOVE};

public class : Yobareru {
	public enum STATE{ATTACK,MOVE};
	STATE statelist;			
	
void Update () { switch (statelist) { case STATE.ATTACK: Attack (); break; case STATE.MOVE:
             Move(); break; } } public void Set(STATE _state){ statelist = _state; } }

 

 

 

 

 

 

 

【Unity】タッチ関係

【使用例】

if(0 < inputtouchCount){

        //タッチした瞬間の座標取得

        if(Input.GetTouch(0).phase == TouchPhase.Began){
           Debug.Log ("座標"+Input.touches[0].position);
        }

        //ドラック中の座標取得
        if(Input.GetTouch(0).phase == TouchPhase.Moved){
      Debug.Log ("座標"+Input.touches[0].position);             
        }

 }

 ※if(0 < inputtouchCount)がないとエラーになるので注意

 

【タッチ状態】
    Began      : いまタッチされた
    Moved      : タッチ中で、動いている
    Stationary : タッチ中で、静止している
    Ended    : 離された瞬間
    Canceled  : キャンセル

 

【注意】

 if(0 < inputtouchCount)

この記述がないとエラーになります

 

【参考】

 

【Cocos】undefined reference to init

【結論】

 クラスを作成したらLOCAL_SRC_FILESに記述すること。

 

CocosStudioを使ってAndroid端末にビルドするとこのような表示がされる

f:id:miya033:20160528182707j:plain

jni/../../Classes/HelloWorldScene.cpp:104: error: undefined reference to 'Test::createScene0()'
collect2.exe: error: ld returned 1 exit status

Test.cppが定義されてないことが原因らしい。               

 

 

【解決手順】

Android.mkを開いてください。

場所:プロジェクトのフォルダ>proj.android>jni>Android.mk

 

見つけたらAndroid.mkをメモ帳かなんかで開いて、LOCAL_SRC_FILESに作成したクラスを書く。

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp\
                   ../../Classes/ここに作成したクラスを書く.cpp  

 

例)記述するとこんな感じ

LOCAL_SRC_FILES := hellocpp/main.cpp \
                   ../../Classes/AppDelegate.cpp \
                   ../../Classes/HelloWorldScene.cpp\
                   ../../Classes/Test.cpp  ←作成したクラス

作業を終えたら次はCocosStudioでの操作になります。

 

LOCAL_SRC_FILESに書き加えたあとで、ビルドすると今度は無事にAndroid端末で実行できます。