前言
代码
游戏需要实现一个类似GTA5和蜘蛛侠游戏中的电路解密功能,记录下来以供日后复习和他人参考。
需求 游戏玩法是把右上角电源、右下角电源还有的游戏左下角终点连接在一起获得胜利,终点不能旋转,其他方块点击旋转90度,而且从两个电源出来的路径要高亮显示。
游戏一共有五种方块(其中十字形相当于两个一组成,不是向其他三个方向散开)。
这种模式诈一看有点复杂,理清了思路就好做了。我一共写了两个类实现这个功能,一个是方块类,另一个是管理类。每个方块添加一个方块类,方块类起到设置方块类型,保存方块方块朝向,点击旋转并且改变朝向调用管理类方法的作用。管理类负责实现判断逻辑和路径高亮。总体思路就是将对应的方块赋值给管理类数组,然后点击方块调用管理类的递归方法,通过当前方块的流向和方块类行判断所要执行的递归方法。

代码写得有些杂乱,有没有隐性bug也不得而知。重要的是思路,代码只是给大家一个参考。
Square类using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.EventSystems;
//记录方块的类型
public enum SquareType
{
Yi,
Er,
San,
Si,
Shi
}
public class Square : MonoBehaviour,IPointerClickHandler
{
[HideInInspector]
public int up = 0;//表示方块方向,最开始用了四个方向,其实一个就可以判断
public SquareType type;//public方块类型,可以在外部修改
//点击旋转90度,up方向也随之改变,并且调用管理类封装的方法
public void OnPointerClick(PointerEventData eventData)
{
if(eventData.button == PointerEventData.InputButton.Left)
{
transform.Rotate(0, 0, -90);
up = (up + 1) % 4;
SquareManager.manager.StartConnect();
}
}
}
SquareManager类
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
//两个目标点
public enum SquareTarget
{
TargetPoint1,
TargetPoint2
}
public class SquareManager : MonoBehaviour
{
public static SquareManager manager;//单例
//储存所有方块
public Square[] squares1;
public Square[] squares2;
public Square[] squares3;
public Square[] squares4;
public Square[,] squares = new Square[4,4];
Dictionary road = new Dictionary();//路径
//数组最大维度
private const int MAX = 3;
private const int MIN = 0;
private SquareTarget target ;
//判断是否完成
bool isChecked1, isChecked2;
//记录Connect方法执行第一次,第一次执行不存储上一个点
bool isFirstConnect = true;
private void Awake()
{
if (manager == null)
manager = this;
}
//初始化数组
void Start()
{
for(int i = MIN; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?