マルチスレッド処理
アプリはだいたいシングルスレッド(unityならawake().start()C#ならmain()みたいな)だけどネットワーク通信するとき処理が1個しか走らないんじゃ困るから個別に処理を走らせるためにある。 非推奨で触るべきじゃないけどThreadクラスというものもある。 スレッドの生成と実行をより改善したのがスレッドプール。 スレッドプールを使ったスレッドのことをタスクという。
[Read More]アプリはだいたいシングルスレッド(unityならawake().start()C#ならmain()みたいな)だけどネットワーク通信するとき処理が1個しか走らないんじゃ困るから個別に処理を走らせるためにある。 非推奨で触るべきじゃないけどThreadクラスというものもある。 スレッドの生成と実行をより改善したのがスレッドプール。 スレッドプールを使ったスレッドのことをタスクという。
[Read More]Player.csの中
using System;
...
public class Player : MonoBehaviour
{
//delegate型で宣言メソッドの中身はここでは定義しないのでnull
//delegate型のみで使うには中身を定義しないといけない
//EX) public OnDamageReceived method_1 = delegate {};
// method_1 += method;
// private method(){
// //実行したい処理
// }
public delegate void OnDamageReceived(int currentHealth);
pubic static event OnDamageReceived onDamage;
//eventはクラス内でしか定義できない、実行はクラス内のメソッドからしか行えないdelegate型のこと
// public static Action onComplete;
//Actionは返り値がvoidのdelegate,返り値を指定する場合は
//Action<返り値の型>と書かないと行けない
public int Health{get;set;}
...
void Damagge(){
Health--;
if(onDamage != null)
onDamage(Health);
}
}
これを別のところで呼び出すとき
[Read More]https://learn.unity.com/tutorial/c-properties?uv=2019.3
Vector3 Transform.position{get;set;}
float Time.deltaTime{get;}
これはfloat型の数字をゲットはできてもセットはできないよという意味。
C#Survival Guide
https://learn.unity.com/project/c-survival-guide-classes?language=en&utm_source=learn_recommendation
OOP(オブジェクト指向プログラミング)について
ちゃんと機能別に分ける。
EX)
プレーヤークラス、レーザークラス。プレーヤー内で発射するレーザーの挙動を書かない。
動画内ではplayerクラスではmovement(),shoot()を定義。
laserクラスではmovement()で弾の挙動を制御する。
武器はweaponStatsで定義。この動画ではplayerクラスの中に定義してる。
weaponStatsで武器の名前は弾の速度、弾の数を定義できる変数を用意。
playerクラスでweaponStatsインスタンスを武器の種類分作って定義。
武器の種類分毎回playerクラスのstart()内に書くのは大変なのでWeaponStatsクラス内にメソッドを用意。このメソッドをコンストラクタという。
なんとかなるだろの精神で初めて多言語化したのですが、 xcodeにlocalizeしたときの設定がなくなってしまった上に結構忘れてしまったのでメモ。
[Read More]unityというゲームエンジンを使って作ったアプリにadmobというgoogle様が扱っているモバイル向け広告サービスがあります。
それを使っててハマった話を後でふりかえれるよう書きます。
Ios版とAndroid版で両方配信されないということはあってもAndroid版だけ配信されててIOS版が配信されないということは今までありませんでした。
Unity_EditorのGame画面ではうまいこと表示されてるのにiphoneで動かしたときだけ広告が表示されませんでした。
最初は10日ぐらいしたらadmobで登録できるようになるかなと思っていましたが、一向にappStoreで表示されないためおかしいと思いプロジェクトの設定を見直すことにしました。