Unity 3D游戏开发学习笔记(1) 井字棋
来源:互联网 发布:rpc java 编辑:程序博客网 时间:2024/05/01 20:12
第一次用Unity 3D写游戏,做了个井字棋。
由于不熟悉onGUI()和C#,参考了师兄的笔记。
代码实际上很简单,逻辑也简单,主要是通过这个小游戏来熟悉一下Unity 3D的一些基本操作实现,比如OnGUI()的原理,实际上这里面的Button并不是点击触发的效果,而是每一帧都在发生改变,因此这里Button实际上是不断重叠制造的吧。(显然变深色了),我感觉这样的做法不太好,但暂时不知道怎么去更好实现,就先这样了。
using System.Collections;using System.Collections.Generic;using UnityEngine;public class TicTacToe: MonoBehaviour { int turn = 1; int [,]state = new int[3,3]; void Start () { Reset(); } void Update () { } void OnGUI() { if (GUI.Button(new Rect(0,0,150,50), "Start Game")) { Reset(); } int current = Check(); if (current == 1) GUI.Label(new Rect(50,55,50,50),"O wins!"); if (current == 2) GUI.Label(new Rect(50,55,50,50),"X wins!"); if (current == 3) GUI.Label(new Rect(50,55,50,50),"Tied!"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (state[i, j] == 1) { GUI.Button(new Rect(0+50*i,80+50*j,50,50), "O"); } else if (state[i, j] == 2) { GUI.Button(new Rect(0+50*i,80+50*j,50,50), "X"); } if (GUI.Button(new Rect(0+50*i,80+50*j,50,50), "")) { if (current == 0) { if (turn == 1) state[i, j] = 1; if (turn == -1) state[i, j] = 2; turn *= -1; } } } } } int Check() { for (int i = 0; i < 3; i++) { if (state[i, 0] == state[i, 1] && state[i, 0] == state[i, 2] && state[i, 0] != 0) { return state[i, 0]; } } for (int j = 0; j < 3; j++) { if (state[0, j] == state[1, j] && state[2, j] == state[0, j] && state[0, j] != 0) { return state[0, j]; } } if (state[1, 1] != 0 && state[0, 0] == state[1, 1] && state[2, 2] == state[1, 1]) { return state[1, 1]; } if (state[1, 1] != 0 && state[0, 2] == state[1, 1] && state[2, 0] == state[1, 1]) { return state[1, 1]; } for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { if (state[i, j] == 0) return 0; } } return 3; } void Reset() { turn = 1; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { state[i, j] = 0; } } }}
0 0
- Unity 3D游戏开发学习笔记(1) 井字棋
- 【Unity 3D游戏开发学习笔记】粒子光环
- 【Unity 3D游戏开发学习笔记】实现太阳系
- 【Unity 3D游戏开发学习笔记】 UI System
- Unity 3D游戏开发学习笔记(2) 牧师与魔鬼
- Unity 3D 学习笔记(1)
- 【Unity 3D游戏开发学习笔记】总结摄像机和光源的使用方法
- 【Unity 3D】学习笔记二十一:unity游戏脚本(一)
- 【Unity 3D】学习笔记二十二:unity游戏脚本(二)
- 【Unity 3D】学习笔记二十三:unity游戏脚本(三)
- 【Unity 3D】学习笔记二十四:unity游戏脚本(四)
- 【Unity 3D】学习笔记二十五:unity游戏脚本(五)
- 【Unity 3D】学习笔记二十六:unity游戏脚本(六)
- 【Unity 3D】学习笔记二十七:unity游戏脚本(七)
- 使用Unity开发2D游戏笔记
- 【Unity 3D】学习笔记十七:自定义游戏中字体
- 【Unity 3D】学习笔记十九:实例:游戏人物移动
- Unity 3D 手机游戏开发学习随笔
- ROS总结——ROS程序包(一)
- 字符串那点事
- Freeswitch在configure时报错no acceptable C compiler found in $PATH
- 《unix/linux编程实践教程》学习笔记:第四章 文件系统:编写pwd
- [Tkinter 教程03] Button 控件
- Unity 3D游戏开发学习笔记(1) 井字棋
- 机器学习进阶路上不可错过的 28 个视频
- Java内存模型
- 自己编写的一个java简单的窗口实现两点求园面积
- SSM框架——详细整合教程(Spring+SpringMVC+MyBatis)
- Vulkan编程指南翻译 第六章 着色器和管线 第3节 管线
- set_task_state和set_current_state
- 【每天一个linux命令】chattr
- 关于路由相关