自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C#—空集Any函数和All函数语义

在c#集合列表的众多扩展方法中,Any方法和All方法是比较常用。Any语义:任意一个元素满足条件则返回true,否则返回 false;All语义:所有元素满足条件则返回true,否则返回false但是,如果集合本身是空集,即集合元素个数为0,可能会对使用者的正常逻辑产生混淆当集合是空集的情况,Any方法和All方法,会忽略条件判断语句,以空集的意义返回判断结果。即:当集合为空集时:Any方法返回false,All方法返回true。这对新手来说是一个不小的坑,下面是测试代码 List<s

2021-09-22 14:22:50 1693

原创 拓展自定义编辑器窗口(EditorGUILayout类)

近段时间在学习扩展unity编辑器窗口Unity支持自行创建窗口,也支持自定义窗口布局。在Project视图中创建一个Editor文件夹,在文件夹中再创建一条脚本。自定义窗口需要让脚本继承EditorWindow再设置MenuItem,此时在Unity导航菜单栏中GameObjec->window就可创建一个自定义窗口。using UnityEngine;using UnityEditor;//引入编辑器命名空间publicclassMyEditor:EditorWindow{[Menu

2021-08-26 15:55:16 1447

翻译 Unity关于transform.TransformPoint的坐标转换

需要对UI的操作对象进行一个位移动画,移动到另一参照物上。由于UI结构比较复杂,操作对象与参照对象,分别是不同父物体下的子物体,这就涉及到了本地坐标和世界坐标的转换。查了下API,发现Unity已经提供好了相应的接口,就是Transform.TransformPoint。于是只要理清相对坐标的概念,就非常的好处理了。创建了4个GameObject(Cube),我现在的目的是,再不改变obj4的父物体对象的情况下,让obj4与obj1重叠。由于obj4是obj3的子物体,那么obj4在Inspector面

2021-08-25 11:36:06 1159

原创 C#之虚方法

把一个基类函数声明为virtual,就可以在任何派生类中重写该函数:class MyBaseClass{ public virtual string VirtualMethod() { return "Method is called in base class"; }}在派生类中重写另外一个函数时,要使用override关键字显示声明class MyDerivedClass:MyBaseClass { public overri

2021-03-25 15:05:59 427

原创 C#之隐藏方法

隐藏方法:可以用与基类成员名称相同的成员来屏蔽基类成员。隐藏数据成员:在派生类中声名名称和类型相同的成员,不需要new关键字。隐藏函数成员:在派生类中声名新的带有相同函数签名的成员(函数名和函数参数相同即可,对返回值类型无要求),在声名前面加上new关键字。如果签名相同的方法在基类和派生类中都进行了声明,但是该方法没有分别声明为virtual和override,派生类就会隐藏基类方法。(要使用new关键字进行声明)基类class MyBaseClass{ public int MyM

2021-03-25 14:17:14 1282

原创 C#之继承

很多类中有相似的数据,比如在一个游戏中,有Boss类,小怪类Enemy,这些类他们有很多相同的属性,也有不同的,这个时候我们可以使用继承来让这两个类继承自同一个类。实现继承:表示一个类型派生于一个基类型,它拥有该基类型的所有成员字段和函数。 在实现继承中,派生类型采用基类型的每个函数的实现代码,除非在派生类型的定义中指定重写某个函数的实现代码。 在需要给现有的类型添加功能,或许多相关的类型共享一组重要的公共功能时,这种类型的继承非常有用。接口继承:表示一个类型只继承了函数的签名,没有继承任何

2021-03-24 18:35:14 271

翻译 C#之程序运行时的内存区域

我们把内存分为堆 空间和栈空间栈空间比较小,但是读取速度快堆空间比较大,但是读取速度慢栈的特征:数据只能从栈的顶端插入和删除把数据放入栈顶称为入栈(push)从栈顶删除数据称为出栈(pop)堆是一块内存区域,与栈不同,堆里的内存能够以任意顺序存入和移除GC Garbage Collector垃圾回收器CLR的GC就是内存管理机制,我们写程序不需要关心内存的使用,因为这些都是CLR帮我们做了。类型被分为两种:值类型(整数,bool struct char

2021-03-24 18:31:30 323

原创 C#之属性访问器

属性的定义结构: public int MyIntProp{ get{ // get code } set{ //set code } }1,定义属性需要名字和类型2,属性包含两个块 get块和set块3,访问属性和访问字段一样,当取得属性的值的时候,就会调用属性中的get块,所以get块,类型需要一个返回值就是属性的类型;当我们去给属性设置值的时候,就会调用属性中的set块,我们可以在set块中通过value访问到我们设置的值。通过属性来访问字段:

2021-03-24 18:04:34 1151

翻译 C#基础之构造函数

构造函数的基础我们构造对象的时候,对象的初始化过程是自动完成的,但是在初始化对象的过程中有的时候需要做一些额外的工作,例如需要初始化对象存储的数据,构造函数就是用于初始化数据的函数。声明基本的构造函数的语法就是声明一个和所在类同名的方法,但是该方法没有返回类型。public class MyClass{ public MyClass() { 这个构造函数的函数体 }}当我们使用new关键字创建类的时候,就会调用构造方法。我们一般会使用构造方法进

2021-03-24 18:00:26 556

原创 c# 数据结构之单链表

//节点类public class ListNode{ public ListNode Previous; public ListNode Next; public int Value; public ListNode(int newValue) { Value = newValue; }}/// <summary>/// 链表类/// -----------------------------------------.

2021-03-18 14:21:37 1100

原创 unity之UI逻辑框架(一)

2021-03-16 19:11:18 446

原创 Unity热更新之ILRuntime(一)(实现摆脱lua的c#热更新)

ILRuntime入门笔记基础知识#官方地址:https://github.com/Ourpalm/ILRuntime官方文档:https://ourpalm.github.io/ILRuntime/文档Markdown源文件:请阅读 **ILRuntime\docs\source\src\ **下的源文件 比这个目录下的源文件新 **ILRuntime\Documents\ **,经过对比两个目录有小部分差异。官方Unity3D热更例子工程:https://github.com/Our

2020-10-30 12:45:43 1516

原创 Unity商业游戏底层加载框架二之打包策略

2020-10-28 17:59:49 284 1

原创 Unity 调用手机功能( 震动、相机)

1.震动:HandHeld.Vibrate(),调用一次震动时长为0.5s,想震动时间长可以多调几次2.使用相机:  Application.RequestUserAuthorization(UserAuthorization.WebCam);  if(Applicaiton.HasUserAuthorization(UserAuthorization.WebCam)){    WebCamDevice[] devices = WebCamTexture.devices;    de

2020-10-22 16:24:27 474

原创 unity之坐标转换

Unity中的四种坐标系 ——世界坐标(World Space)世界坐标很好理解,它是一个3D坐标。就是游戏物体在你创造世界中的坐标。transfrom.position获得的是物体相对于世界坐标的位置,transfrom.localPosition获得的是物体相对于父物体坐标的位置模型Mesh保存的顶点坐标均为局部坐标系下的坐标——屏幕坐标(Screen Space)屏幕坐标是以像素来定义的,与分辨率有关,例如分辨率为1280*720的屏幕则Screen.width为1280,Scre..

2020-10-13 15:34:58 420

原创 Unity商业游戏底层加载框架一

本模块主要讲解: AssetBundle打包管理; 类对象池和资源对象池; 离线数据及配置表; 使用框架制作简单的UI; 预备知识了解 程序集(可以自行网上查找了解); unity资源加载方式(1,拖到组件上 2,Resources.load 3,AssetBundle 4,AssetDataBase.LoadAtPtah); c#的xml序列化 1,类转成xml 2,以及转成二进制; unity asset序列化;xml序列化与反序列化例子//要序列...

2020-09-18 19:24:25 506

原创 游戏中的设计模式二

今天呢主要介绍一下设计模式几本很好的书: 《设计模式 可复用面向对象软件的基础》 《Head First 设计模式(中文版)》 《设计模式与完美游戏开发》上班的时候好好挣钱。下班的时候好好提升自己哦~~~~~~~...

2020-09-14 19:23:32 76

原创 游戏中的设计模式一

什么是设计模式?设计模式的作用? 解决同一种类型的问题 使用设计模式可以让代码结构更加清晰 设计过程中可以反复使用的、可以解决特定问题的设计方法https://www.zhihu.com/question/19558521 面向对象设计中的常见设计原则 单一职责原则 开-闭原则 里氏替换原则 依赖倒置原则 接口隔离原则 最少知识原则(迪米特法则) 少用继承多用组合(合成复用)上述原则作用:让自己设计实现出来的软件系统更加稳定,容易维护并且具有一致性。 下面就是..

2020-09-14 18:42:54 293

原创 unity3D Xlua热更新流程

基于unity3D的xlua热更新流程Description —— 描述Xlua 是腾讯出品的热更新方案由于其开源,且热更新方案简单易用,便于开发者对代码进行维护与修改,而得到广泛认可这里 Chinar 对 Xlua 实现热更新的流程与坑进行一些记录与说明Xlua Import and Open Hotfix —— Xlua导入项目并且开启热更新导入 Xlua /到项目中后,我们需要在设置面板开启热更新才可以完全使用输入命令后,一定要回车,然后等待编译!Generate and Injec

2020-09-04 17:34:03 582

原创 unity UGUI之获取UI子节点在Canvas的2D坐标(一)

在做unityUGUI时,经常会遇到屏幕坐标转换为ugui坐标,前段时间项目需求鼠标点击屏幕遥杆就在手指点击的位置,会有屏幕左边转化为UGUI坐标来实现,今天想大家分享一下坐标转换,如下图所示,UI比较复杂了子节点会很多,假设我想获取某个子的子节点的2D坐标。首先我们要搞清楚 transform.postion 和 rectTransform.anchoredPosition 这两个坐标是完全不一样的。前面的是3D坐标,后面的是2D在Rect里的坐标,并且还是相对坐标,那么节点深了坐标就更不好换算了。.

2020-07-10 20:32:07 1857

原创 Unity 音频管理器SoundManager(一)

using System.Collections;using System.Collections.Generic;using UnityEngine;using XLua;[LuaCallCSharp]public class SoundManager : MonoBehaviour{ private float bgmVolumScale = 1f; //背景音乐声音大小比例 private float effVolumScale = 0.5f; //音效声音大小比例 ...

2020-06-19 12:06:43 1708 1

原创 unity UGUI之共有弹框类

using System;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;using UnityEngine.UI;public class GlobalTipUIView : LuaBehaviour{ public enum MessageType { OK, //ok .

2020-06-02 14:26:00 336 2

原创 Unity3D_角色界面人物旋转展示

using UnityEngine;using System.Collections;public class GamePlayer : MonoBehaviour{ //是否被拖拽 privatebool onDrag=false; //旋转速度 publicfloatspeed=6f; //阻尼速度 privatefloatzSpeed; //鼠标沿水平方向拖拽的增量 privatefloat...

2020-05-22 18:19:43 1289 1

原创 unity 序列帧动画之宝箱开启动画

unity 序列帧动画之宝箱开启动画 using UnityEngine;using System.Collections;using UnityEngine.UI;using System.Collections.Generic;public class LoadingUIPanel : UIBase{ [SerializeField] private...

2020-04-20 14:46:25 977

原创 c#数据结构与算法2(线性表)

线性表线性表是最简单、最基本、最常用的数据结构。线性表是线性结构的抽象(Abstract),线性结构的特点是结构中的数据元素之间存在一对一的线性关系。这种一对一的关系指的是数据元素之间的位置关系,即:(1)除第一个位置的数据元素外,其它数据元素位置的前面都只有一个数据元素;(2)除最后一个位置的数据元素外,其它数据元素位置的后面都只有一个元素。也就是说,数据元素是一个接一个的排列。因此,可以把线...

2020-04-08 16:13:25 274

原创 c# 数据结构与算法1

学习数据结构的意义:数据结构算是程序员的一个工具箱,对程序中的问题会有很好的解决方案。 可以提高自己的编程能力。数据结构的分类集合(Set):该结构中的数据元素除了存在“同属于一个集合”的关系外,不存在任何其它关系。 集合与数学的集合类似,有无序性,唯一性,确定性。 线性结构(Linear Structure):该结构中的数据元素存在一对一的关系。我们.net程序员做的最多的工作就是对数...

2020-04-02 11:07:47 180

原创 unity3d Text渐变色

using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class TextChange : BaseMeshEffect{ public Color32 TopColor = Color.white; public ...

2020-03-31 15:07:21 154

原创 c#基础之接口

接口关键字:interface接口的定义:是指一组函数成员而不实现成员的引用类型,其他类型和接口可以继承接口。接口的特点:通过接口可以实现多重继承,c#接口的成员不能包含public、protected、internal、private等修饰符。原因是很简单的,因为接口里面的方法都需要外面的接口是实现方法体,那么修饰符必然是public。c#接口中的成员默认是public的。 接口成...

2020-03-31 14:40:58 411

原创 Unity3D UGUI图集打包与动态使用(TexturePacker)

制作图集的好处:众所周知CPU是用来处理游戏的逻辑运算的,而GPU是用来处理游戏中图像的。在GPU中,我们要绘制一个图像需要提交图片(纹理)到显存,然后再进行绘制(在这个过程中会产生一次DrawCall),也就是说我们要绘制100张图片就要产生100次DrawCall.显然这是非常消耗性能的。这是制作图集的好处就显而易见了: ①、减少性能消耗,提高处理效率 ②、可以归类不同模...

2020-03-27 16:47:10 2153

转载 c#中字典类(Dictionary)介绍

关键字:Dictionary 说明:1、必须包含命名空间System.Collection.Generic2、Dictionary里面每一个元素都是以键值对的形式存在的3、键必须是唯一的,而值不需要唯一的4、键和值都可以以任何数据类型存在(比如:值类型、引用类型、自定义类型等等)5、通过一个键读取一个值得时间接近O(1)字典的使用方法:定义:Dictionary&lt...

2020-03-25 16:35:00 12581 2

空空如也

空空如也

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

TA关注的人

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