C#
文章平均质量分 79
@onelei
《游戏AI程序设计实战》作者
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
临时字符串0GC解决方案--OneString
OneString 是一个 0 GC ToString 解决方案。传统的数字或者bool变量转换成string的时候会产生GC。由于string是不可变的,每次修改string的值,内部都会生成一个新的string。如果我们需要临时打印某个值,使用系统提供的 ToString 函数就会不可避免地产生一个新的string,我们其实并不需要保存这个string的值,仅仅是为了打印一下,这是我们不想看到的结果。因此如果有一个临时字符串在我们使用之后,自动回收重复利用,并且不会产生GC就好了。OneString .原创 2020-05-29 11:02:34 · 1768 阅读 · 0 评论 -
字符串优化加强版–StringPool
字符串优化加强版–StringPool之前写过一篇string字符串优化相关的文章,但是里面是使用一个static静态变量。先看下之前的代码using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace Lemon{ public class QStrin...原创 2020-02-17 12:53:59 · 637 阅读 · 0 评论 -
UGUI自动化–正篇UIBaseGenerate
UGUI自动化–正篇UIBaseGenerate通过UGUI自动化的前面几篇文章介绍的常用UGUI控件的封装,接下来终于要步入正题了。没错今天就开始介绍如何根据UI控件的名字自动生成变量然后自动将控件和变量序列化。废话不多说,先上图。UISample_UI如上图的界面所示,我们搭建一个简单界面如上所示,一个按钮以及一个界面标题。接下来我们看下其对应的Prefab结构。请注意Prefab...原创 2020-02-06 20:27:28 · 401 阅读 · 0 评论 -
UGUI自动化–QButton&QToggleButton&QToggleButtonGroup
UGUI自动化–QButton&QToggleButton&QToggleButtonGroup本系列来自https://github.com/onelei/Lemon/tree/master/Assets/QGUI 今天接着介绍UGUI自动化中的Button和ToggleButton控件,相信读了前几篇文章的渐渐理解了设计思路。QButton继承自UGUI的Button组件,Q...原创 2020-02-06 16:00:27 · 495 阅读 · 0 评论 -
UGUI自动化–QImage、QRawImage
UGUI自动化–QImage、QRawImage今天接着介绍UGUI自动化中的Image和RawImage控件,为什么要放在一起介绍呢?主要是封装的功能和代码都差不多。QImage继承自UGUI的Image组件,QRawImage继承自UGUI的RawImage组件。两个Image组件都是增加了一个多语言KEY的显示。图片也需要多语言,因此通过一个string类型的KEY,根据不同语言动态设置即...原创 2020-02-05 12:58:52 · 399 阅读 · 0 评论 -
UGUI自动化–QText
UGUI自动化–QText从本篇开始打算写一些Unity的UI自动化相关的文章。自动化的核心思想是根据UI控件的名字自动生成变量然后自动将控件和变量序列化。在开始之前先介绍一下自己封装的文本控件QText,它继承自UGUI的Text组件。为什么要封装一层呢?由于Unity是外国人写的,UGUI的Text组件里面的参数不太符合国内的使用习惯。UGUI的Text组件里面的字体、字号、字体颜色、文本的...原创 2020-02-05 12:56:57 · 441 阅读 · 0 评论 -
Unity优化全屏UI的Overdraw之ImageBox
Unity优化全屏UI的Overdraw之ImageBox我们在Unity下面做UI的时候需要给每个界面放一个背景图,这个背景图有的时候是以弹窗的形式出现,我们不需要看到这个背景,只需要让其能够响应raycastTarget,也就是希望该背景能够阻挡住鼠标点击弹窗下面的按钮。通常的做法是加一个空的Image如下所示。我们修改这个Image的Alpha值为0,表示透明;同时勾选RaycastT...原创 2019-12-06 21:16:52 · 1051 阅读 · 0 评论 -
Unity游戏开发性能优化篇
Unity游戏开发性能优化篇MonoBehaviour可以写一个基类继承自MonoBehaviour,然后所有的UI脚本继承自该基类,保证游戏中尽量较少的脚本继承自MonoBehaviour,所有的Update执行的时候,都使用基类从MonoBehaviour继承下来的Update函数。不要各自继承使用。总之一句话,继承自MonoBehaviour的脚本数量越少越好,最好就一份。获取组件U...原创 2019-12-03 20:22:44 · 870 阅读 · 3 评论 -
Unity Debug Dll 编写
Unity Debug Dll 编写Debug.Log存在的问题在Unity调试代码的时候,我们经常要用到Debug.Log函数。 UnityEngine.Debug.Log(message);平时开发的时候需要打印Log,但是出包的时候需要屏蔽掉对应的Log打印。这时候有人或许说了,Unity提供了UNITY_DDITOR编辑器下的宏,我们调用Log函数的时候可以通过添加宏来控制显示。...原创 2019-12-02 21:46:41 · 449 阅读 · 0 评论 -
Windows下的.Net的软件包管理器-NuGet
是什么NuGet是.NET的软件包管理器。 NuGet客户端工具提供了生成和使用软件包的功能。 NuGet Gallery是所有软件包作者和使用者都使用的中央软件包存储库。怎么做假如我们需要安装CsvHelper,只需要在控制台输入Install-Package CsvHelper...原创 2019-10-23 19:54:13 · 674 阅读 · 0 评论 -
Unity FlappyBird游戏实现
Unity FlappyBird游戏实现FlappyBird下面看看实现效果实现我们需要规划一下Bird的位置为坐标(0,0),Bird不用在水平方向上移动,只需要将整个背景向左移动即可。首先地板BackGround分为两块,两块地板一起向左移动,当地板超出视野的时候将其移动到最右边,然后接着向左移动,以此来实现循环滚动的效果。BackGround_Left坐标是(0,0,0),B...原创 2019-10-16 15:20:38 · 987 阅读 · 0 评论 -
Unity AssetBundle 教程
Unity AssetBundle 教程AssetBundle是Unity用来处理资源热更新的,下面简单介绍AssetBundle的所有操作。本教程使用的Unity版本:Unity 2018.2.12f1 (64-bit)AssetBundle打包设置AssetBundle名字手动设置打包之前按照上图所示的方法,设置一下AssetBundle的名字。自动设置将需要进行AssetBu...原创 2019-10-12 20:54:23 · 656 阅读 · 0 评论 -
[算法]01背包问题
子问题的最优解也是全局最优解对于一个物品, 选择放还是不放,只有两个选择, 故属于01问题.// 物品;public class Item{ // 重量; public int Weight; // 价值; public int Value; // 是否放入; public bool Input;}核心算法// 第n件物品,放入剩余容量为left原创 2015-11-07 15:31:40 · 700 阅读 · 0 评论 -
C# 给系统提供的 Class 添加扩展方法
例如 将 List< int > 转换成 string[] 系统没有提供现成的方法这里我们写一个扩展方法public static string[] ToStringArray(this List<int> list){ string[] tmp = new string[list.Count]; for(int i=0;i<list.Count;++i) {原创 2015-11-06 14:57:19 · 599 阅读 · 0 评论 -
C#使用Linq优化查询速度
添加Linq引用 using System.Linq;定义一个 Class public class Hero { public int HeroID; public string HeroName; }更新 List 中的某项数据 public List<Hero> HeroList = new List<Hero>();代码如下原创 2015-11-27 17:21:19 · 7478 阅读 · 0 评论 -
C# Interface 接口
C# Interface 接口接口就是在有若干个类,但这些类中有某些功能相同,但实现不同的方法,这个时候把这些方法写成接口,然后在每个类中分别加以实现。例子public class UserModel{ public static int Exp;}public interface IUserData{ int Exp { get; }}p原创 2015-12-18 10:40:17 · 458 阅读 · 0 评论 -
Unity C# 多线程同时写入一个文件
ThreadFileWriterUnity C# 多线程同时写入一个文件是什么 ThreadFileWriter是一个Unity下可以多线程对文件进行写入的框架。为什么 当我们在Unity的多线程中要调试一些问题的时候,需要写入文件查看问题在哪。比如网络问题,这个时候在主线程下就无法将信息很好的打印出来。这就诞生了ThreadFileWriter。怎么做我们都知道多线程下要争...原创 2019-07-01 20:32:54 · 1915 阅读 · 0 评论 -
Unity查找图片被哪个Prefab引用
Unity查找图片被哪个Prefab引用Unity中的每个物体都有一个唯一Guid ID , Prefab里面都存有引用到的Guild ID 。 所以我们只要在Prefab信息中找到该图片的Guid ID就表明该Prefab引用到了该图片。完整代码如下:using UnityEditor;using UnityEngine;using System.Collections.Generic...原创 2019-07-22 14:23:13 · 6800 阅读 · 2 评论 -
Unity数据存储Sqlite的使用
Unity数据存储Sqlite的使用是什么Sqlite是一个SQL数据库引擎。为什么之前的项目中基本都是使用PlayerPrefs来存储数据,但是由于后期数据结构复杂的情况下,比如存储一个List的结构数据,通常是自己控制写法添加逗号,分号来将数据分隔开。如果哪里写错了,整个数据就会错位导致数据错乱,维护起来非常麻烦。由于服务器的数据存储都是使用数据库SQL,因此打算在前端也使用数据库存储...原创 2019-09-12 22:11:48 · 1546 阅读 · 0 评论 -
【Unity UGUI】获取UGUI界面的屏幕大小
【Unity UGUI】获取UGUI界面的屏幕大小UGUI屏幕大小说到屏幕大小我们可能会想到Unity自带的Screen.width,但是其实UGUI的屏幕大小是根据我们的适配情况自己算出来的,它和Screen.width是不一样的。我们在做分辨率适配的时候需要获取到当前的屏幕尺寸,也就是图中的箭头所示大小。具体可以通过以下方法获取 /// <summary> ...原创 2019-10-04 11:18:25 · 3751 阅读 · 0 评论 -
C# List.Sort()用法
类似背包系统的多条件排序如下public class BagItem{ public int ID; public int Level; public int Star;}排序规则 先对Level的大小排序 再对Star的大小排序 最后按照ID大小排序关键代码:int SortBy_Level_Star_ID(BagItem a, BagItem b)原创 2015-11-04 18:32:11 · 3836 阅读 · 0 评论
分享