自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 自己写的BMFont导入工具,快速把图片转换为美术字体

配合BMFont工具使用可以快速把图片转换为美术字,在项目中使用美术字体,需要准备一个材质球 一个空白字体,然后自己改一下路径,这两个脚本是分开的 ,先点art。using System;using System.Collections;using System.Collections.Generic;using System.IO;using UnityEngine;using UnityEngine.UI;using UnityEditor;public class ArtFont

2021-05-18 15:56:59 435

原创 Lua实现简单的A*寻路

--[[A*寻路算法,目前只适用于01图,0可通行,1不可通行--]]--行走的4个方向localfour_dir={{1,0},{0,1},{0,-1},{-1,0},}--行走的8个方向localeight_dir={{1,1},{1,0},{1,-1},{0,1},{0,-1},{-1,...

2021-05-18 15:47:48 1142

原创 优化一个Image遮罩,去除掉颜色组件只保留点击响应,透明的且让鼠标点不下去。

using System;using System.Collections.Generic;using UnityEngine;using XLua;namespace UnityEngine.UI{ public class Empty4Raycast : MaskableGraphic { protected Empty4Raycast() { useLegacyMeshGeneration = false; ...

2021-05-13 11:18:18 283

原创 U3D滑块中添加粒子特效,出现挡不住的情况,自己写个Mask来挡住

usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Rendering;usingUnityEngine.UI;publicclassUIParticle:MonoBehaviour{privatestaticCamerauiCamera;privateclassMatEntry{...

2021-03-17 23:00:47 510

原创 Unity3D计算Text组件渲染全部文字所需要的宽高

我们在项目研发中经常会遇到实时改变文字框大小的需求,大面积使用自适应组件对游戏是一个负担,如果优化这个需求呢,其实Text中有一个preferred属性,可以让开发者知道Text渲染这些文字需要的宽度或者高度。以下贴出一个封装函数,是lua写的。--传入一个Text组件,type是获取高或者宽,自己决定设置什么。--这里是直接把Text组件设置为刚好渲染出框内文字的宽或者高。localfunctionSetTextSize(text,type)localRT=UIU...

2021-01-21 17:13:51 1511

原创 游戏开发中道具一键合成思路,多级别道具合成,采用递归方法,简单高效。

在游戏开发中我们往往会遇到道具合成的需求,如果玩家自己一级一级的合成太过繁琐,何不直接一键合成他需要的材料,通过递归来完成计算,从初级材料一级一级的完成合成。以下是LUA开发的递归合成思路。--itemId是需要计算的道具ID--need_num 是需要itemId这个道具的数量localfunctionItemfunc(self,itemId,need_num)--这一步是去道具表去道具信息,如果没有就退出localcfg=assemble_cfg[itemId...

2021-01-07 09:56:17 1281

转载 lua生成随机数,设置随机数种子

lua需要生成随机数的需求也是很常见的,为了生成看起来更随机的数字,我们需要注意以下几点我们也需要给随机数设置随机数种子:math.randomseed(xx) lua对随机数种子也是有一定要求的:不能太相近 lua中的os.time()是基于秒的,不太满足lua对随机数种子的要求(如果设置随机数种子的频率太高的话)那怎么做?把 os.time()返回的数值字串倒过来再取高位7位。 这...

2019-09-12 15:10:41 2630

原创 DOTween插件动画播放的曲线设置,取消缓动采用匀速的方式。

主要采用的是SetEase方法transform.DOMoveX(4, 1).SetEase(Ease.Linear);参考缓动的枚举来设置自己的缓动数据DOTWeen缓动枚举 public enum Ease { Unset =0, Linear =1, InSine =2, OutSine =3, InOutSi...

2019-08-28 14:56:29 4883

原创 高性能的Unity3DScrollView组件,仅适用部分特定的滑块需求

using System;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;using UnityEngine.UI;using XLua;/// <summary>/// 高性能ScrollView/// </summary>[RequireComp...

2019-07-16 14:26:27 342

原创 Lua判断表是否为空

2019-03-23 14:23:30 1546

转载 帧同步

农药自从上线以来,依靠着强大的产品力以及腾讯的运营能力,在游戏市场上表现可谓是风生水起,根据第三方的调研数据显示,《王者荣耀》渗透率达到22.3%,用户规模达到2.01亿人,每日的日活跃用户(DAU)均值为5412.8万人。 如此可观的数据,令人十分钦佩。当然了,作为技术人,更愿意从技术上了解去一些王者荣耀的实现原理和架构方式,从中找到新的知识领域,扩展自己的知识边界,丰富自己的专业技能。借助这...

2019-03-04 20:49:39 748

原创 Unity3D LUA开发代码规范

一:命名规范:1、类命名:驼峰式命名:单词首字母大写,如:GetInstance2、函数命名:同类名3、公有变量命名:同类名4、私有变量命名:小写,单词之间用“_”分隔,如:self.action_list5、局部变量命名:同私有变量6、参数名命名:同私有变量7、任何情况下不应该由外部访问的成员,使用双下划线打头,其它同私有变量命名,如:析构函数__init,内部成员s...

2018-10-30 13:49:27 1083 1

原创 预编译脚本不再报错代码

#pragma warning disable 0618 

2018-09-11 14:55:01 277

原创 DoTween常用的API

using DG.Tweening;public class MyText : MonoBehaviour {    private Text text;    // Use this for initialization    void Start () {        text =  this.GetComponent&lt;Text&gt;();        text....

2018-09-11 14:33:52 2258

原创 Unity3D项目优化方案

使用UnityAssetCleaner清理项目中没有使用的文件

2018-08-26 17:33:51 591

原创 链表

  

2018-08-06 20:16:43 174

原创 c#栈

    

2018-08-06 20:15:26 208

原创 xlua和c#交互

using System.Collections;using System.Collections.Generic;using UnityEngine;using XLua;public class xluafile : MonoBehaviour {    private LuaEnv xluafiles;    // Use this for initialization  ...

2018-07-31 10:38:13 745

原创 lua和U3D中协程的异同

协程的一般概念:在主线程逻辑运行的同时,开启另一段逻辑处理,以辅助主程序的执行。(一)首先说下unity中的协程。调用方法如下:public Coroutine StartCoroutine(IEnumerator routine);public Coroutine StartCoroutine(string methodName, [DefaultValue("null")] o...

2018-07-26 09:16:35 1256

原创 Unity3DAB包分组策略

 

2018-07-19 20:08:01 1615

原创 C#螺旋矩阵

 static void Main(string[] args)        {            Console.Write("请输入正整数:");            int n = int.Parse(Console.ReadLine());      //读取输入            Console.WriteLine();            int[,] arr ...

2018-07-19 14:18:47 1634

原创 Unity3D内置着色器完成图片变灰色的效果

在Shader上加入  float gray = dot(color.rgb, float3(0.299, 0.587, 0.114));    color.rgb = float3(gray, gray, gray);

2018-07-19 10:33:21 1267

原创 C#Json泛型解析

需要注意的是,创建类的名字要和Json里的名字一模一样,顺序也要一样,才能使用泛型来自动完成解析。Json里面对象的键值必要要和定义的类里面的字段或者属性保持一致;Jsons[]  arrayJson =  JsonMapper.ToObject&lt;Jsons[]&gt;(File.ReadAllText("Json解析.txt"));//利用泛型来解析JSON的内容。       ...

2018-07-17 16:54:25 1393 1

转载 c# Reverse()的用法

Rervese的基本用途是:反转数组中元素的顺序,常见的两种用法如下:1.void Array.Reverse(Array array)  static void Main(string[] args)        {            char[] chs = { '清','晨','我','上','马'};            Array.Reverse(chs);   ...

2018-07-17 15:54:16 13232 2

原创 c#Json解析

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;using System.IO;using LitJson;namespace JSON解析{    class Program    {        s...

2018-07-17 15:23:30 251

原创 C#xml解析

            List&lt;Xmljxdf&gt; jxdf = new List&lt;Xmljxdf&gt;();            XmlDocument xmdoc = new XmlDocument();//创建Xml解析的对象            xmdoc.Load("Xmldf.txt");//获取到XML文档内容            XmlNode...

2018-07-16 20:02:15 1681

原创 出牌的信息交互

出牌的时候客户端向服务器发送一条出牌的信息的消息,然后按钮会会锁定,以防多次点击或者向服务器发送多条信息导致数据出问题,锁定后只有服务器解析完,然后反馈消息回来并解析完成之后,才会解除锁定,然后在到玩家出牌时间的时候才能再次进行出牌。...

2018-07-16 15:06:28 186

原创 C#项目解析

首先做的是一个Socket服务器的网络游戏,采用的是SupSocket框架来实现,SupSocket是微软推荐的一种轻量级可以扩展的的服务器框架,也是Untiy3D可以选择安装的一个框架,比较方便使用,游戏发送消息和接收消息都会定义一个以/0为起止符的消息格式,这样来确定发送消息已经全部完成,使用string.spot(",")方式来把收发的消息进行分隔,区分所有的消息。可以用\0来表示结束,用X...

2018-07-16 15:01:48 908

原创 c# 文件读取和写入

 static void Main(string[] args)        {            //string[] strArray = File.ReadAllLines("TextFile1.txt");//读取文件信息,把每行文本都读写成一个字符串,最后组成一个字符数组。            //foreach (var s in strArray)            //...

2018-07-16 10:45:31 423

原创 c#File文件操作

//FileInfo fileInfo = new FileInfo(@"D:\unit3D作业\文件操作\文件操作\TextFile1.txt");            //Console.WriteLine(fileInfo.Exists);//判断是否找到了该文件,找到了返回ture            //Console.WriteLine(fileInfo.Name);//取得文件名...

2018-07-16 10:09:52 203

转载 Untiy3D Mipmap

启用Mip Maps对内存的影响是?() 增加约33%的内存Mipmap技术有点类似于LOD技术,但是不同的是,LOD针对的是模型资源,而Mipmap针对的纹理贴图资源使用Mipmap后,贴图会根据摄像机距离的远近,选择使用不同精度的贴图。缺点:会占用内存,因为mipmap会根据摄像机远近不同而生成对应的八个贴图,所以必然占内存!优点:会优化显存带宽,用来减少渲染,因为可以根据实际情况,会选择适合...

2018-07-13 11:25:16 352

转载 请简述GC(垃圾回收)产生的原因,并描述如何避免?

当我用new创建一个对象时,当可分配的内存不足GC就会去回收未使用的对象,但是GC的操作是非常复杂的,会占用很多CPU时间,对于移动设备来说频繁的垃圾回收会严重影响性能。下面的建议可以避免GC频繁操作。 1)减少用new创建对象的次数,在创建对象时会产生内存碎片,这样会造成碎片内存不法使用2)使用公用的对象(静态成员,常量),但是不能乱用,因为静态成员和常量的生命周期是整个应用程序。3)在拼接大量...

2018-07-13 09:51:04 10108

原创 C#TCP和UDP

2018-07-13 09:30:14 306

原创 C#解析XML

public void handleLoginOk(XDocument o)    {        print("handleLoginOk");        //var params:Object = {};        //params.success = true;        //params.error = "";        var id = (from ele in o.D...

2018-07-12 18:17:24 258

原创 C#Socket编程,TCP协议收发消息

服务器端static List&lt;Client&gt; clientList = new List&lt;Client&gt;();//储存了连接上的客户端        /// &lt;summary&gt;        /// 广播消息        /// &lt;/summary&gt;        /// &lt;param name="message"&gt;&lt;/para..

2018-07-12 11:25:50 430

原创 C# Unity3d 添加场景

 SceneManager.LoadScene(stateName, LoadSceneMode.Additive);删除场景UnloadSceneAsync

2018-07-10 09:40:51 1328

原创 C# Socket编程之创建Socekt=

static void Main(string[] args)        {            //1、创建socket            Socket tcpServer = new Socket(                AddressFamily.InterNetwork, //内网                SocketType.Stream, //用什么东西通信  ...

2018-07-09 20:22:09 168

转载 C# 线程Lock锁 (只能锁定对象)

一. 为什么要lock,lock了什么?当我们使用线程的时候,效率最高的方式当然是异步,即各个线程同时运行,其间不相互依赖和等待。但当不同的线程都需要访问某个资源的时候,就需要同步机制了,也就是说当对同一个资源进行读写的时候,我们要使该资源在同一时刻只能被一个线程操作,以确保每个操作都是有效即时的,也即保证其操作的原子性。lock是C#中最常用的同步方式,格式为lock(objectA){code...

2018-07-09 14:50:36 2772

原创 C#线程池

相关概念:    线程池可以看做容纳线程的容器;    一个应用程序最多只能有一个线程池;    ThreadPool静态类通过QueueUserWorkItem()方法将工作函数排入线程池;    每排入一个工作函数,就相当于请求创建一个线程; 线程池的作用:线程池是为突然大量爆发的线程设计的,通过有限的几个固定线程为大量的操作服务,减少了创建和销毁线程所需的时间,从而提高效率。如果一个线程的时...

2018-07-09 11:52:35 248

原创 C#Thread开启线程的方法,传参和传递一个对象的方法

 static void DownloadFile(object file)//传参必须是Objet类型        {            Console.WriteLine("开始" + Thread.CurrentThread.ManagedThreadId+file);            Thread.Sleep(2000);            Console.WriteLin...

2018-07-09 11:05:30 2685

空空如也

空空如也

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

TA关注的人

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