首先创建一个项目
![](https://i-blog.csdnimg.cn/direct/a76c88eaa07b40b5ad2818ceafd63a40.png)
打开项目后复制至3个场景
![](https://i-blog.csdnimg.cn/direct/927aaf1e4a1a4014bf589d6b0b0bb12c.png)
命名为
![](https://i-blog.csdnimg.cn/direct/797ac7b9c64e406793e8614a7a13ab65.png)
创建一个空物体
![](https://i-blog.csdnimg.cn/direct/198713278a414c61a291bedc9d4d20a0.png)
命名为GameLoop
![](https://i-blog.csdnimg.cn/direct/062efd355cc749fea6334f9ab7651122.png)
创建一个脚本GameLoop.cs
![](https://i-blog.csdnimg.cn/direct/734bb88c1e6d4d93b1ea5faa359630bb.png)
编写代码如下
![](https://i-blog.csdnimg.cn/direct/f0961e8015e04321800cb5e723a4319d.png)
将代码挂载至空物体GameLoop
![](https://i-blog.csdnimg.cn/direct/d3aa395510c64d539c91b09415df6236.png)
将三个场景拖拽至Scenes In Build
![](https://i-blog.csdnimg.cn/direct/2c0a0e8f55a541448aeade4c9a4bbf02.png)
![](https://i-blog.csdnimg.cn/direct/64ea7e84ca754592903f60af5cb70c40.png)
分析下状态模式的类图
![](https://i-blog.csdnimg.cn/direct/88c6ad443bf446a1a344db9120daa049.png)
我们创新类图中的代码
![](https://i-blog.csdnimg.cn/direct/d76085090ab24961a834ce68343dfc0b.png)
![](https://i-blog.csdnimg.cn/direct/34106ce4c24844a4a2359aa834373ade.png)
![](https://i-blog.csdnimg.cn/direct/d0ef581e86a14307b2c86ad995d31884.png)
![](https://i-blog.csdnimg.cn/direct/c659cbd71f4e4c188521961043e0b9d9.png)
![](https://i-blog.csdnimg.cn/direct/0038a15904194fc38ccb1900452fe70e.png)
![](https://i-blog.csdnimg.cn/direct/3adf9149b81446d091887cc4623ed0aa.png)
编写ISceneState.cs
![](https://i-blog.csdnimg.cn/direct/d9f4943641fd48aabdb5ed416ba671ae.png)
编写三个状态子类继承构造并赋值
![](https://i-blog.csdnimg.cn/direct/acdae42c2df44d88a9d7b34534285d45.png)
![](https://i-blog.csdnimg.cn/direct/50fcdd490c0245e39643b1f1c5b28541.png)
![](https://i-blog.csdnimg.cn/direct/b951b5a1c89746c39b1d5a9098604fe3.png)
编写SceneStateController.cs
![](https://i-blog.csdnimg.cn/direct/f0927b38b0d24226965c6acc9d6f1063.png)
编写GameLoop.cs
![](https://i-blog.csdnimg.cn/direct/2f743dac63ce4e65953c28cfd3e0118e.png)
状态模式框架搭好后我们在ISceneState.cs
![](https://i-blog.csdnimg.cn/direct/b2bbf39af0b8402ba2766015ba379363.png)
编写GameLoop.cs
![](https://i-blog.csdnimg.cn/direct/ad75bb4076184acca20a4c0172b37996.png)
编写LoadingState.cs
![](https://i-blog.csdnimg.cn/direct/0b5b2d0d032944ea8d003970cc0a8aab.png)
在场景中创建一个Image命名为Logo
![](https://i-blog.csdnimg.cn/direct/f44aa57bb526431abbcf2c138823c117.png)
运行即可看见Logo页面的一个从暗淡到显示的变化
运行第1s
![](https://i-blog.csdnimg.cn/direct/3e6706726a4d480ab8e5417ab6131f58.png)
运行第2s
![](https://i-blog.csdnimg.cn/direct/764077b3efbc4b0dbacc9bc32667d0bf.png)
接下来继续编写代码LoadingState.cs
![](https://i-blog.csdnimg.cn/direct/fd3657f368434aed9e7d2f31b6eae74d.png)
在unity场景02UIScene中创建一个button
![](https://i-blog.csdnimg.cn/direct/953df28835ff4c9bab42530fe8cbea03.png)
命名为StartBtn
![](https://i-blog.csdnimg.cn/direct/d84c2fc8d56e4691b8858108e96b8d24.png)
![](https://i-blog.csdnimg.cn/direct/5f3a21e229914d20bb5868e2ffe56c30.png)
运行在Loading由隐至显后3秒钟跳转至UIScene场景
第一秒
![](https://i-blog.csdnimg.cn/direct/76bf2aabdc6c4abcacab6b3064b75abc.png)
第二秒
![](https://i-blog.csdnimg.cn/direct/bb68df372aea4d1e9546334d5f751f93.png)
第五秒
![](https://i-blog.csdnimg.cn/direct/fe3880d546704c439d5ff24965b73bd8.png)
编写代码
![](https://i-blog.csdnimg.cn/direct/74c51d41896040b2a9e6620b6a63947d.png)
继续运行项目
点击button后进入GameScene场景
![](https://i-blog.csdnimg.cn/direct/dd50ae9c60ce4259bec674ae0a4fbb02.png)
End.