2011年9月2日金曜日

UnityC# + LINQ

C#3.0の機能LINQが使えました。
LINQはデータベース言語のようですね
詳しくはこの辺
http://ufcpp.net/study/csharp/sp3_linq.html

uinsg System.Linq;
でクエリ文が使えるようになって、あれこれデータ作り。

試作データはこんな感じに
{攻撃名, 攻撃データ}
攻撃名でアクセスしてデータを引っ張ってくる。
LINQ使う必要がないけど、使いたかった。

試作クラスは以下の通り。
public class PlayerAttackData : MonoBehaviour {
   
    enum AttackCode{ONE, TWO, THREE};
    class AttackData{
        public int Power{
            get;
            set;
        }
        public int Frame{
            get;
            set;
        }
       
        public AttackData(int power, int frame){
            Power = power;
            Frame = frame;
        }
    }
   
    class AttackInfo{
        public AttackCode Code{
            get;
            set;
        }
       
        public AttackData Data{
            get;
            set;
        }

        public AttackInfo(AttackCode code, AttackData data){
            Code = code;
            Data = data;
        }
    }
    AttackInfo[] attack_infos = new AttackInfo[2];

    // Use this for initialization
    void Start () {
        //Define Data
        attack_infos[0] = new AttackInfo(AttackCode.ONE, new AttackData(15, 10));
        attack_infos[1] = new AttackInfo(AttackCode.TWO, new AttackData(10, 5));
       
        AttackCode now_attack_code = PlayerAttackData.AttackCode.ONE;
        var attack_info =
            from p in attack_infos
                where p.Code == now_attack_code
                select p.Data;
        AttackData data = (AttackData)attack_info;
        Debug.Log(data.Frame);
    }
   
    // Update is called once per frame
    void Update () {
   
    }
}

0 件のコメント:

コメントを投稿

このガジェットでエラーが発生しました