首页 >> 大全

Unity连连看插件制作

2023-10-13 大全 32 作者:考证青年

十一:连连看插件实践 11.1 基础知识

需要的技术前提

掌握Unity最老的GUI技术,也就是将代码写在OnGUI里面。使用,进行布局使用进行编辑器资源加载窗口创建,将练练看的元素按照1---n进行命名(自己的规则,自己匹配即可)

_连连看游戏制作_unity简单连连看制作

设计界面如下所示:上面是棋盘,下面是当前选中的按钮。点击确定的时候,将二维数组存储到一个txt文件之内即可。

最终效果如图:存储二维数组到目录下的目录下的文本文件,方便后期动态加载关卡

unity简单连连看制作__连连看游戏制作

具体代码如下:

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEditor;using System.Text;using System.IO;public class WindowExample2 : EditorWindow{#region 窗口需要使用的变量public GUISkin skin;//皮肤public int currentIndex;//当前点击的下标public int[,] map = new int[5, 5];//二维数组#endregionprivate static WindowExample2 window;//窗体实例//显示窗体[MenuItem("MyWindow/Second Window")]private static void ShowWindow(){window = GetWindow("Window Example");window.Show();window.maxSize = new Vector2(400,500);}private void OnEnable(){//加载GUISkinskin = AssetDatabase.LoadAssetAtPath("Assets/skin.guiskin");}//绘制窗体内容private void OnGUI(){/*EditorGUILayout.BeginVertical("box");EditorGUILayout.LabelField("Your Second Window", EditorStyles.boldLabel);GUILayout.Label(new GUIContent("MyLaabel"));GUILayout.Space(20);GUILayout.TextField("对象名称");name = EditorGUILayout.TextField("StringValue", name);if (GUILayout.Button(new GUIContent("确定"), GUILayout.ExpandWidth(true))){Debug.Log("Clcik");}EditorGUILayout.EndVertical();*/GUI.skin = skin;for (int i = 0; i < 4; i++){if (GUI.Button(new Rect(i * 50, 300, 50, 50), "",skin.GetStyle((i + 1).ToString()))){ChangeIndex(i + 1);}}for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){//0是style里面的默认图片if (GUI.Button(new Rect(j * 50, i * 50, 50, 50), "", skin.GetStyle("0"))){MapClick(i * 5 + j);}}}for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){GUI.Button(new Rect(j * 50, i * 50, 50, 50), "",map[i, j].ToString());}}if (GUI.Button(new Rect(0, 350, 200, 30), "确定")){Debug.Log("自己保存在指定的路径");SaveToFile();}}private void SaveToFile() {//如何将一个二维数组写入到文件里面  StringBuilder buider = new StringBuilder();for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){buider.Append(map[i, j]).Append(",");}//删除每一行的逗号buider.Remove(buider.Length - 1, 1);//追加换行buider.Append("\n");}//删除最后一个换行buider.Remove(buider.Length - 1, 1);string dir = "Assets/Resources/LevelInfo";if (!Directory.Exists(dir)){Directory.CreateDirectory(dir);}FileStream stream = File.Create(dir + "/01.txt");//将字符串写入到文件之中byte[] content = System.Text.Encoding.UTF8.GetBytes(buider.ToString());stream.Write(content, 0, content.Length);stream.Close();AssetDatabase.SaveAssets(); //保存AssetDatabase.Refresh();//刷新}//修改当前物体下标private void ChangeIndex(int tag){currentIndex = tag;}//点击修改对应的二维数组元素private void MapClick(int tag){map[tag / 5, tag % 5] = currentIndex;}}

(8)这里只是演示了一个基本的界面,比较丑陋,大家自己进行扩展即可。点击菜单栏的--即可查看自定义的工具窗口

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了