自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

菜鸟的学习历程

记录我努力的点滴

  • 博客(13)
  • 收藏
  • 关注

原创 优雅编程 lua实现自定义的迭代器

前言阅读本文之前如果不理解闭包的原理和应用可移步优雅编程-lua实现函数柯里化,本文会带你理解lua中的迭代器原理以及实现迭代器定义让我们看一下维基上对迭代器的解释迭代器(iterator),是确使用户可在容器对象(container,例如链表或数组)上遍访的对象,设计人员使用此接口无需关心容器对象的内存分配的实现细节。其行为很像数据库技术中的光标(cursor),迭代器最早出现在1974年设计的CLU编程语言中。如果没有写过c或者c++直接看这个解释可能很抽象,那我就直接说一个在lua中的

2021-07-22 12:09:06 426

原创 Unity UGUI自适应布局系统详解

前言此文延续上篇文章Unity UGUI源码解析,来进行对应的关于UGUI布局这块的讲解,关于布局刷新这块逻辑请参考上文中Canvas渲染重绘流程,用样适用布局更新这块逻辑,由于组件都是功能向的脚本,所以此文主要说明布局组件的使用方法,不对代码有过多的深入,具体实现逻辑请查看源码。UGUI布局组件详解组件概览让我们先看一下UGUI框架中在UI布局这方面有哪些脚本,再来进行一一讲解可以看到所有带icon图片的脚本都是我们可以在对UI进行布局的时候进行使用的,这里核心的脚本组合是LayoutGro

2021-07-19 20:37:55 6805 2

原创 Unity UGUI源码解析

前言这篇文章想写的目的也是因为我面试遇到了面试官问我关于UGUI原理性的问题,虽然我看过,但是并没有整理出完整的知识框架,导致描述的时候可能自己都是不清不楚的。自己说不清楚的东西,别人就等于你不会。每当学完一个东西的时候,应该会大体框架流程,具体实现细节有所了解,然后整理出来,以备日后查阅。人的记忆是有限的,如果不记下来,每次翻的都是别人的博客,这样其实是一个很不好的习惯。所以决定整理出一些自己关于UGUI的了解。以上只是我的牢骚,下面开始今天的内容。学习方法论与要点整理在框架之前我们需要先思考,我

2021-07-18 21:42:36 4652 3

原创 记一次 盛大,巨人,塔人 面经

前言这次完全是裸面,没有任何的准备,也发现了自己的很多不足,包括很多东西当场没办法冷静分析,很多自己写过的代码细节也忘记了。而且他问的知识点方向有的确实很少接触过,我会根据我的回忆来总结出这次经验,总之有兴趣的可以往下看吧。正文盛大 龙之谷2团队刚开始我说了前项目一些框架性的东西,他总之也就听个大概。接下来是他问的问题知道c#引用类型和值类型的区别吗,说下分别有哪些有没有用过c#的unsafe你知道c#的gc机制吗,描述一下在lua中怎么实现一个类xlua中lua和c#怎么进行交互,l

2021-07-06 22:24:49 310 1

原创 Unity SpriteRender和Image的区别

Image组件渲染基于CanvasRender和Image组件进行渲染默认材质渲染队列为Transparent Geometry,开启模板测试,渲染顺序是基于Canvas的Order In Layer层级,由Canvas逻辑进行管理默认的渲染网格为正方形,更多的片元着色器操作可以实现基于图集打包和网格数据合并,在此Canvas下实现实现渲染批处理交互检测逻辑根据Unity层级面板顺序把Image组件加入队列,通过UGUI的EventSystem的Update来每帧遍历所有Canva

2021-06-27 00:51:16 2075 3

原创 优雅编程-lua实现函数柯里化

理解闭包函数首先我们来看一个普通的函数作用域的实现--普通的变量定义 function a() local flag = 1 print("打印结果:"..flag) end打印结果:1这段函数会在他执行执行完这个方法后,flag的作用域的失效了。下面让我们来看这段基本的函数内部的闭包实现 --普通的变量定义 function a() local flag = 1 local func = fun

2021-06-25 01:24:03 400

原创 Unity资源加载方式以及管理

资源加载接口以及分析一、AssetBundle.LoadFromFile (string path, uint crc, ulong offset); 同步方法AssetBundle.LoadFromFileAsync (string path, uint crc, ulong offset); 异步方法最快的ab包加载方式,内存占用低,不可自定义硬盘数据格式优点: 加载效率高,内存占用低,加载时只加载文件头,只有在真正加载对应资源的时候才会加载进内存缺点: 指定的ab包必须是未经自压缩与加密的

2021-06-20 15:46:01 1733 3

原创 Unity脚本自动化打包流程

前期准备工作:1.搭建jenkis来作为自动化打包流程的控制台,编写ant脚本,把所有在代码中需要配置的参数写到ant脚本的property声明文件中2.在外部创建一个文件夹来放所有平台相关资源,不用的平台资源对应不同的目录打包流程:初始化:1.覆盖平台相关资源2.拉取svn到指定版本3.将指定平台写入代码中4.关闭打包机上unity和资源管理器窗口编译准备工作

2017-08-18 11:33:56 4474 4

原创 Unity性能优化 对象延迟创建

using UnityEngine;public class LaterCreator : MonoBehaviour{public delegate GameObject CreatorCallBack();public CreatorCallBack _creatorCallBack;public System.Object CallBackObj;

2017-08-17 18:10:17 1428

原创 c#游戏事件系统

/// /// 游戏事件分发器,用于监听、广播游戏事件。/// public static class EventDispatcher{    public delegate void EventListener(Dictionary args);    ///     /// 广播指定事件。    ///     /// 事件编号    /// 事件参

2017-08-17 17:48:37 843

原创 Lua实现的对象池,Unity

local PrefabObjectPool = {}PrefabObjectPool.__index = PrefabObjectPoolfunction PrefabObjectPool.New(prefab,capcity) if prefab == nil then error("[PrefabObjectPool]prefab should not be nil") end

2017-08-17 17:41:49 4443 2

原创 lua协同程序实现管道过滤器

--消费者驱动,协同程序实现管道过滤器function receive(prod)--启动协程,获取返回值 local status,value=coroutine.resume(prod) return valueendfunction send(x)--返回新值并挂起 coroutine.yield(x)endfunction producer()--创建协程返回读取的值

2016-07-06 15:20:42 456

原创 xml查找

using System;using System.Collections.Generic;using System.Xml;using System.Text; public class SXML//节点类 { public bool hasFound = true;//是否找到 private XmlNode rootNode;//根节

2016-02-05 15:47:21 567

空空如也

空空如也

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

TA关注的人

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