private void initFsm() { fsm = new Currency_FSMSystem(); Currency_FSMState runState = new Player_RunState(fsm, (int)StateID.Run); Currency_FSMState desthState = new Player_DeathState(fsm, (int)StateID.Desth); fsm.addState(runState); fsm.addState(desthState); fsm.performTransition((int)StateID.Run); UpdateManager.add_playerEventList_(updateFsmSystem); }
/// <summary> /// 各项初始化 /// </summary> private void init() { /** 组件初始化内容 ↓**/ map = GameObject.Find("Map").transform; sprite = GameObject.Find("myCanvas").GetComponent <SpriteRenderer>(); colliderLine = sprite.GetComponent <EdgeCollider2D>(); r2d = sprite.GetComponent <Rigidbody2D>(); /** 数据初始化内容 ↓**/ int height = Screen.height >> sample; int width = Screen.width >> sample; Debug.Log(height + " " + width); mousePos_List = new List <Vector2>(); colorBuff = new Color[width * height]; td = new Texture2D(width, height); spriteScale = (Camera.main.orthographicSize * 1000 / 5) / (float)td.height; sprite.transform.localScale = Vector3.one * spriteScale; canvasWidth = width; /*for (int i = 0; i<height* width; i++) * colorBuff[i] = new Color(0, 1, 0, 1); * td.SetPixels(colorBuff); * td.Apply(true); * Sprite spriteA = Sprite.Create(td, new Rect(0, 0,td.width , td.height), new Vector2(0.5f, 0.5f)); * sprite.sprite = spriteA;*/ /** 状态机初始化内容 ↓**/ fsm = new Currency_FSMSystem(); Currency_FSMState canvasState = new Canvas_DrawState(fsm, (int)StateID.Draw, sprite, r2d, colliderLine, mousePos_List, colorBuff, td, map, spriteScale, canvasWidth, sample, outLine); Currency_FSMState instantiationState = new Canvas_InstantiationState(fsm, (int)StateID.instantiation); fsm.addState(canvasState); fsm.addState(instantiationState); /** 启用 ↓**/ UpdateManager.add_playerEventList_(updateFsmSystem); }
public Currency_FSMState(Currency_FSMSystem fsm, int id) { this.fsm = fsm; stateID = id; }
public Player_RunState(Currency_FSMSystem fsm, int id) : base(fsm, id) { }
public Canvas_InstantiationState(Currency_FSMSystem fsm, int id) : base(fsm, id) { }
int sample; //用于优化画布绘制的数值 public Canvas_DrawState(Currency_FSMSystem fsm, int id, SpriteRenderer sp, Rigidbody2D r2d, EdgeCollider2D ecol, List <Vector2> m_list, Color[] colorBuff, Texture2D td, Transform map, float spriteScale, int canvasWidth, int sample, int outLine) : base(fsm, id) { initOver = false; setBaseGetComponent(sp, r2d, ecol, m_list, colorBuff, td, map, spriteScale, canvasWidth, sample, outLine); }