自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(44)
  • 收藏
  • 关注

原创 鼠标拖动物体进行旋转

鼠标拖动旋转物体:public class PlayerRotate : MonoBehaviour { private bool isClick = false; private Vector3 nowPos; private Vector3 oldPos; public float length = 5; void OnMouseUp() { //鼠标抬起 isClick = false; } void OnMouseD

2020-05-26 17:11:04 1160 1

原创 UGUI:拖动UI物体实例化物体

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;public class Drag : MonoBehaviour, IDragHandler, IEndDragHandler, IBeginDragHandler{ //要复制的物体 public GameObject gobj; pub...

2020-05-20 16:37:41 656 5

原创 背包系统(九):数据的存储—通过PlayerPrefs进行数据持久化(完结)

在Inventory中写入数据的存储和读取的方法:存储数据时使用StringBuilder(using System.Text)的原因:→在程序开发过程中,我们常常碰到字符串连接的情况,方便和直接的方式是通过"+"符号来实现,但是这种方式达到目的的效率比较低,且每执行一次都会创建一个String对象,即耗时,又浪费空间。使用StringBuilder类就可以避免这种问题的发生存储的方...

2020-05-06 20:41:30 1001

原创 背包系统(八):锻造装备

创建一个锻造炉,为锻造炉添加ForgePanel脚本:为锻造材料增加JSON文件并为其配置Formula脚本用于解析对应的JSON字段:在FormulaPanel类中对JSON进行解析并在Start中调用:在Formula脚本中声明 是否能够匹配锻造所需要的材料和个数 的方法:思路:先创建一个<int>集合needMateriaList,...

2020-05-06 20:41:24 492

原创 背包系统(七):游戏商店

先创建一个商店,并添加脚本ShopPanel,并将子物体的Slot脚本替换为ShopSlot,继承自Slot:再创建一个金币,在Player中对金钱进行管理,并声明获取和花费金钱的方法:在ShopPanel中初始化商店要卖出的物品:遍历数组调用StoreItem()--通过ID来存储物品(在脚本上写入要卖的物品的IDShopSlot重写父类OnPointerD...

2020-05-06 20:41:18 863

原创 背包系统(六):人物面板

先制作一个人物面板并修改各个部位的名字:在CharacterPanel下添加脚本CharacterPanel(单例模式,继承自Inventory) ,在子物体Slot中添加脚本EquipmentSlot(继承至Slot)在EquipmentSlot类中声明武器类和装备类,并在Equipment和Weapon类的脚本中将EquipmentType和WeaponType枚举类中添加一个No...

2020-05-06 20:41:11 1201

原创 背包系统(五):添加Chest箱子类

将背包复制一份,并修改Height,作为箱子单例类:让背包和箱子能够显示和隐藏:在Inventory类中(箱子和背包的父类),添加隐藏和显示的方法:在Update中更新箱子和背包的CanvasGroup组件的Alpha值和BlockRaycast :可用Player类对其检测:...

2020-05-06 20:40:36 443

原创 背包系统(四):对物品的点击操作

将ItemUI移动至Canvas下,改名为PickedItem,在InventoryManager中声明PickedItem,将其作为鼠标选中的物体,在ItemUI中声明隐藏、显示、设置其位置的方法,并在InventoryManager的Start中调用PickedItem的Hide方法将其在开始时隐藏接着,在Slot中实现接口IPointDownHandler(用于对物品的操作)...

2020-05-06 20:40:21 1460

原创 背包系统(三):完善其他的JSON

添加蓝瓶的JSON文件在之前的Inventory类的StoreItemh方和FindSameTypeSlot法中,将Type修改为ID—由ID来区分物品,而不是类型(同类型又好几种不同的物品),并在Slot中添加一个获取ID的方法写一个装备类--胸甲的JSONenum.Parse:将一个或多个枚举常数的名称或数字值的字符串表示转换成等效的枚举对象解析装备的JSON:...

2020-05-06 20:40:07 757

原创 Unity背包系统(二):ToolTip类(物品信息提示类)的显示与跟随

UI创建Text下面创建Image和Text,将ToolTip的中心点移至左上角,再ToolTip添加Content Size Fitter组件,H和V调为V Size,如图给ToolTip添加脚本和Canvas Group组件,控制其隐藏和显示:using System.Collections;using System.Collections.Generic;using...

2020-05-06 20:39:40 4128 2

原创 Unity之背包系统(一):物品类的生成和背包的制作

物品的UML类图创建Item 物品基类:再开发它的消耗品类、装备类、武器类接着,设计消耗品类的JSON文件:http://www.bejson.com/jsoneditoronline/创建一个物品管理类做成单例模式,将脚本放在“InventoryManager”(场景中新建的GameObject)中 :然后用JsonObject解析Json...

2020-05-06 20:39:21 14986 7

原创 UGUI学习:面板倾斜

using System.Collections;using System.Collections.Generic;using UnityEngine;public class TiltPanel : MonoBehaviour{ public Vector2 range = new Vector2(5f, 3f); Transform mTrans; Qua...

2020-04-30 14:48:40 542

原创 UGUI学习:拖拽控制面板大小

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;public class ResizePanel : MonoBehaviour, IDragHandler, IPointerDownHandler{ ...

2020-04-30 13:59:52 275

原创 UGUI学习:抓取和放入替换图片

效果:抓取的图片注:PointerEventData.pointerEnter当前触发OnPointerEnter的对象,一般鼠标移动到ui上的时候会触发这个事件,对应的是OnPointerExit,鼠标移出的时候using System.Collections;using System.Collections.Generic;using UnityEngine;us...

2020-04-30 09:57:32 385

原创 unity之3D数学基础

——————————Unity3D:左手坐标系(世界坐标系),即+x, +y, +z分别指向右方,上方和前方。Unity中的多种坐标系:1.全局坐标系 World Coordinate System全局坐标系是用于描述场景内所有物体位置的方向的基准,也称为世界坐标系。 在Unity中创建的物体都是以全局坐标系中的坐标原点(0,0,0),来确定各自的位置的。 可以使用trans...

2019-12-25 23:24:12 529 1

原创 unity游戏开发:FSM状态机的简单实现

角色的有限状态 :此类表示有限状态系统中的状态。每个状态都有一个字典,其中有成对的(transition-stateID)显示如果在此状态下触发转换,则FSM应该处于哪个状态是当前状态。方法Reason用于确定触发的条件方法Act具有执行角色在此状态下应执行的操作的代码。using System.Collections;using System.Collections...

2019-11-29 23:26:25 714 1

原创 游戏开发(六):怪物类的实现与GameController游戏控制者

怪物实现移动的逻辑:1.level对象控制round责任链的执行。2.具体产怪的逻辑是通过round去执行的,round里存有本回合需要产生的怪物数量与ID,之后会把这些内容传入GameController去调用Invoke方法延时循环产生怪物。(为什么我们要把产怪方法封装在CameCOntoller里,而不是直接在round里去完成这个方法:1.我们要延时循坏调用方法InvokeRep...

2019-11-26 15:28:24 1953

原创 游戏开发(五):关卡信息的存储以及关卡责任链的开发

编辑地图时用Tool宏,游戏运行时用Game宏关卡信息类:using System.Collections;using System.Collections.Generic;using UnityEngine;/// <summary>/// 关卡信息类/// </summary>public class LevelInfo { publ...

2019-11-26 15:25:49 874

原创 unity游戏开发(四):怪物类的开发(建造者模式)

声明建造者接口类IBulider:public interface IBuilder<T>{ /// <summary> /// 获取到游戏物体身上的脚本对象,从而去赋值 /// </summary> T GetProductClass(GameObject gameObject); /// <summa...

2019-11-26 15:16:26 1227

原创 unity游戏开发(三):游戏地图的制作及地图信息的存储(LitJson)

游戏地图的制作:ps:资源的获取自己定义格子图片:在游戏物体格子上挂载脚本:GridPoint,创建一个空物体,挂载MapMaker脚本using System.Collections;using System.Collections.Generic;using UnityEngine;public class MapMaker : MonoBehaviour{...

2019-11-25 12:04:40 3720 1

原创 unity游戏开发(二): 场景的切换

创建场景状态接口类 与 场景状态基类public interface IBaseSceneState { void EnterScene(); void ExitScene();}public class BaseSceneState : IBaseSceneState{ protected UIFacade mUIFacade; publi...

2019-11-22 18:23:56 3303

原创 unity游戏开发(一): 工厂模式与资源池

定义游戏物体工厂的接口:​/// <summary>/// 游戏物体工厂的接口/// </summary>public interface IBaseFacotry { GameObject GetItem(string itemName); void PushItem(string itemName,GameObject item);}...

2019-11-21 17:42:14 764

原创 unity — Json解析

注:利用LitJson进行解析创建一个AppOfTriggerPhone类:public class AppOfTriggerPhone{ public int appNum; public bool PhoneState; public List<string> appList;}在创建Assets下创建Resources文件夹下创建J...

2019-10-30 15:54:22 188

原创 UGUI案例篇——页面滑动

在Canvas下创建ScrollView脚本声明的数据:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;using UnityEngine.EventSystems;using DG.Tweening;public c...

2019-10-13 22:23:49 327 1

原创 C#--定时回调系统:unity中定时器的实现

开发基于C#语言实现的高效便捷计时器工具,可集成中在服务器(.net core/.net framework)以及Unity客户端环境中。定时任务可循环、可替换、可取消。可使用独立线程计时,也可以使用Update()驱动计时。自由集成,灵活性高。开发目标:1.支持时间定时2.定时任务可循环,可取消,可替换3.使用简单,调用方便时间定时:场景中创建一个Button组件,...

2019-10-08 14:17:59 862

原创 UGUI案例篇——使用2D图片制作3D轮转图

最后的两个代码段为最终代码,可直接使用(需导入DoTween)对数据的设置(参考):,先创建物体模板,再创建物体设置图片的缩放系数和X轴位置,再对其位置信息进行计算:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;publ...

2019-10-04 00:26:47 983 9

原创 UGUI案例篇——解决UI和3D物体之间的事件响应问题

(一)解决UI和3D物体层叠时,只响应UI的问题创建一个Cube和一个Image对Cube加入脚本:using System.Collections;using System.Collections.Generic;using UnityEngine;public class CubeOnClick : MonoBehaviour,IPointerClickHandler...

2019-10-01 16:36:55 479

原创 Lua 元表与元方法

Lua 元表(Metatable):在 Lua table 中我们可以访问对应的key来得到value值,但是却无法对两个 table 进行操作。如:计算两个table的相加操作a+b因此 Lua 提供了元表(Metatable),允许我们改变table的行为,对每个行为关联了对应的元方法。setmetatable(table,metatable): 对指定 table 设置元表(me...

2019-09-29 01:31:42 261

原创 设计模式实战学习笔记(七):适配器、代理、装饰模式

(十九)适配器模式适配器模式代码实现public class DMAdapter:MonoBehaviour{ void Start() { Adapter adapter = new Adapter(new NewPlugin()); StandardInterface si = adapter; si.Request(...

2019-09-24 20:28:33 134

原创 设计模式实战学习笔记六):备忘录、访问者模式

(十七)备忘录模式:备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可将该对象恢复到原先保存的状态。从结构中看出备忘录模式包含3个角色:1.Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻自身的内部状态,并可使用备忘录恢复内部状态。Originator可以根据需要决定Memento...

2019-09-22 12:36:43 216 1

原创 设计模式实战学习笔记(五):责任链、观察者模式

(十五)责任链模式(关卡系统)责任链模式的代码实现:public class ChainOfResponsibilityDM : MonoBehaviour{ private void Start() { char c = 'b'; HandlerA handlerA = new HandlerA(); Handler...

2019-09-21 15:21:43 242

原创 设计模式实战学习笔记(四):享元、组合、命令模式

(十一)享元模式:当相同的角色(如多个新手士兵)共享多个不变的属性时,使不变的属性只存在一份(会变化的属性如 当前生命值、等级…),每次要使用的时候,就去储存相同属性的BaseAttr工厂中取得该属性,可减少所占用的内存。——重构代码——完成战士/敌人角色的构造(使用享元) :将ICharacterAttr 中的基础属性删除,创建CharacterBaseAttr用于管理角色的相同...

2019-09-19 09:17:50 327

原创 设计模式实战学习笔记(三):工厂(简单工厂、工厂模式和抽象工厂)、建造者模式

(九)工厂模式(简单工厂、工厂模式和抽象工厂)创建战士工厂:创建ICharacterFactory工厂接口,和继承其的子类 SoldierFactory 和 EnemyFactory在IWeapon中 声明枚举类 WeaponType 武器类型在ICharacterAttri中对其构造函数进行改写,对其属性进行初始化(后续不做改变)using System.Colle...

2019-08-16 16:25:19 298

原创 设计模式实战学习笔记(二):模板、有限状态机FSM、角色管理系统

(六)模板模式模板方法模式:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤,是一种基于继承的代码复用技术。相关链接:https://blog.csdn.net/lovelion/article/details/8299794模板模式代码:using System.Collections;using ...

2019-08-16 15:15:56 429

原创 设计模式实战学习笔记(一):状态、外观、单例、中介者、桥接、策略模式

(一)状态模式相关链接:http://www.cnblogs.com/wangjq/archive/2012/07/16/2593485.htmlusing System.Collections;using System.Collections.Generic;using UnityEngine;public class StateDemo : MonoBehaviour{...

2019-08-16 15:15:46 339

原创 Unity3d -- AssetBundle基础

AssetBundle的用处1,AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载; 2,AssetBundle自身保存着互相的依赖关系; 3,压缩包可以使用LZMA和LZ4压缩算法,减少包大小,更快的进行网络传输; 4,把一些可以下载内容放在AssetBundle里面,可以减少安装包的大小;什么是AssetBundle...

2019-08-01 21:05:16 255

原创 C#—连接MYSQL数据库进行增删改查

打开VS,添加引用,添加MYsql.data.dll,引入命名空间using MySql.data.MySqlClient;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using MySql.Data.My...

2019-07-19 17:53:59 504

原创 TCP协议—粘包和分包的演示以及解决方案

初始代码来源 :https://blog.csdn.net/weixin_44003309 我的另外一篇:Socket_TCP协议的同步与异步调用粘包:传输数据时 数据过小或数据传输过快时,将多个信息粘在一起传输分包:传输的数据过大时,可能会拆分成多个进行传输粘包演示:在客户端代码中将发送消息的代码改为用for循环发送100条消息给服务器: //...

2019-07-14 23:09:19 781

原创 Unity实现基于UGUI的简易UI框架

将Canvas下的东西做为预制体,创建一个文件夹,叫做UIFrameWork.在UIFrameWork下创建文件夹UIPanel,其下创建脚本UIPenelType,写一个枚举类(对应UI预制体)如:再ShowinExplorer打开目录,在UIFrameWork文件夹下创建一个新的文件夹Resources,在Resources下创建txt文本,改名为 UIPanelTyp...

2019-07-01 13:54:49 449

原创 动态规划——钢条切割最优解算法

最优价格表钢条长度 1 2 3 4 5 6 7 8 9 10钢条价格 1 5 8 9 ...

2019-06-23 17:15:14 1780

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除