Unity3D学习之旅2

本文介绍了Unity3D学习过程中的实践操作,包括如何多开Unity、利用EPPLUS组件读写Excel、创建简单UI交互及拓展系统菜单。通过实例展示了Unity3D中的实用技巧,适合初学者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

结束了上礼拜轻松的入门看视频后,我开始阅读宣雨松老师写的《Unity3D游戏开发第二版》和《C#入门经典》(从wty那里白嫖获得),非常长草的一个阶段,我看的比较杂,漫无目的地翻阅,因为水平比较低,所以一知半解的,没啥实质性的突破,就总结一下一些新学的实用操作吧!

关于Unity3d游戏开发这本书的代码

这本书有随书代码清单,我下面好多代码就是用的这个代码.建议下载代码.
这样我们学习的时候可以省去敲打代码的时间.我是觉得初学先熟悉和会改动别人的代码就好了.

多开Unity

教程:传送门
学会了多开,就可以打开同时打开自己和别人的project进行学习了!

EPPLUS

我是看着这个小姐姐的视频学了Unity中Excel文件的读取和写入.
传送门
EPPLUS是一个使用Open Office XML(xlsx)文件格式,能读写Excel 2007/2010文件的开源组件.
通过EPPLUS可以持久化数据,进行数据的存储和读取.
(可能游戏存档会用到它?距离有点远,先开个头,以后再学)

创建一个简单的UI交互

创建一个新的工程,放入这两个脚本
在这里插入图片描述

using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
 
public class Script_05_07 :MonoBehaviour 
{
	public Button button1;
	public Button button2;

	public Text text;
	public Image image;

	void Awake()
	{
		button1.onClick.AddListener(delegate() {
			OnClick(button1.gameObject);
		});

		button2.onClick.AddListener(delegate() {
			OnClick(button2.gameObject);
		});
		UGUIEventListener.Get (text.gameObject).onClick = OnClick;
		UGUIEventListener.Get (image.gameObject).onClick = OnClick;
	}

	void OnClick(GameObject go)
	{
		if (go == button1.gameObject) {
			Debug.Log ("点击按钮1");
		} else if (go == button2.gameObject) {
			Debug.Log ("点击按钮2");
		}else if (go == text.gameObject) {
			Debug.Log ("点击文本框");
		}else if (go == image.gameObject) {
			Debug.Log ("点击图片");
		}
	}
	
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;

public class UGUIEventListener : UnityEngine.EventSystems.EventTrigger
{

	public UnityAction<GameObject> onClick;


	public override void OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData)
	{
		base.OnPointerClick (eventData);

		if (onClick != null) {
			onClick (gameObject);
		}

	}

	/// <summary>
	/// Get or add an event listener to the specified game object.
	/// </summary>
	static public UGUIEventListener Get(GameObject go)
	{
		UGUIEventListener listener = go.GetComponent<UGUIEventListener>();
		if (listener == null)
			listener = go.AddComponent<UGUIEventListener>();
		return listener;
	}
}

2.然后在canva里创建两个button,代码里的文本和图片可以先不管,想放的话也可以创建起来.
在这里插入图片描述
3.把Script_05_07脚本拖给Canvas
4.在Canvas的Inspector视图里的最下面的脚本的设置里有四个参数,把对应的实例拖进去即可.
在这里插入图片描述
5.最终实现效果
在这里插入图片描述
我的废话总结:感觉还是有点怪怪的,因为一般的游戏的初始界面背景不会这么杂乱.
我接下来得学学改进一下.

拓展系统菜单

1.下载EPPlus组件
(一定要下载并拖进工程里,不然之后的生成Excel的脚本代码会报错!)
2.将组件拖入工程的project视图里并在Assets目录下新建一个Excel
在这里插入图片描述
这时候再在Editor目录下加入一个C#脚本,代码如下:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEditor;
using System.IO;
using OfficeOpenXml;
using System;

public class Script_08_02  {

	[MenuItem("Excel/Write Excel")]
	static void LoadExcel () 
	{
		//创建Excel文件
		string path = Application.dataPath+ "/Excel/"+DateTime.Now.ToString("yyyy-MM-dd--hh-mm-ss")+".xlsx";
		var file = new FileInfo(path);
	
		using (ExcelPackage excel = new ExcelPackage (file)) {
			//向表格中写入数据
			ExcelWorksheet worksheet = excel.Workbook.Worksheets.Add("sheet1");
			worksheet.Cells[1, 1].Value = "Company name1";
			worksheet.Cells[1, 2].Value = "Address1";

			worksheet = excel.Workbook.Worksheets.Add("sheet2");
			worksheet.Cells[1, 1].Value = "Company name2";
			worksheet.Cells[1, 2].Value = "Address2";
			//保存
			excel.Save();
		}
		AssetDatabase.Refresh ();
	}
}

在这里插入图片描述
我们保存后可以发现工具栏发生了变化,多了一个Excel菜单,是通过C#脚本拓展得到的,
点开里面有一个WriteExcel.
点击就可以保存指定的数据啦.
这行语句表明了菜单的索引(多级目录),如不存在则为新建对应的目录.

[MenuItem("Excel/Write Excel")]

LoadExcel函数大家看一遍就大致知道这些语句是干嘛的了,此处不继续展开了~

小白扫盲区(大佬可跳过)

1.excel中常见的.xlsx和.xls格式有什么区别:
版本不同,xlsx是高版本,07版以后的拓展名都是xlsx,是用了新的基于XML的压缩文件格式取代了其目前专有的默认文件格式,在传统的文件名拓展名后面添加了x,使得占用空间更小.
xls格式的文件所有office程序都能打开,但.xlsx只有office2007或者更新的版本才能打开.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值