Пример #1
0
 public virtual void InitData(ChessData data, UChessboard board)
 {
     this.name      = data.name;
     this.campType  = data.campType;
     this.point     = data.point;
     this.prefab    = data.prefab;
     this.chessType = data.chessType;
     _chessboard    = board;
 }
    // Use this for initialization
    void Start()
    {
        //UI
        UIEventListener.Get(BtnStart.gameObject).onClick = OnClickStart;
        UIEventListener.Get(BtnStop.gameObject).onClick  = OnClickStop;


        if (LoadWeights)
        {
            try
            {
                LoadGenFromFile();
            }
            catch (Exception E)
            {
                Debug.Log("Load Gen Failed " + E.Message);
                LoadWeights = false;
            }
        }

        if (!LoadWeights)
        {
            UGenAlg.ConfigData Config = new UGenAlg.ConfigData();
            Config.PopSize    = 3000;
            Config.NumWeights = new UBotAIController().Net.GetWeightCount();
            Gen = new UGenAlg();
            Gen.Init(Config);
        }

        //更新适应性分数代理
        Gen.onUpdateFitnessScores = UpdateFitnessScores;

        BoardList = new List <UChessboard>();
        ChessBoardPrefab.learn = true;
        ChessBoardPrefab.gameObject.SetActive(showFirstChessboard);
        ChessBoardPrefab.InitStart();

        BoardList.Add(ChessBoardPrefab);
        //创建其他棋盘
        for (int i = 1; i < Gen.Config.PopSize / 2; i++)
        {
            UChessboard board = GameObject.Instantiate <GameObject>(ChessBoardPrefab.gameObject).GetComponent <UChessboard>();
            board.learn = true;
            //board.show = false;
            board.gameObject.SetActive(false);
            board.InitStart();
            BoardList.Add(board);
        }

        //将加载的适应性分数保存
        if (LoadWeights)
        {
            PutFitnessScores();
        }
    }