自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 Unity Material的优化 MaterialPropertyBlock ShareMaterial

在Unite 2017 中曾提到了使用材质属性块的优化建议,笔者为此做了特别的研究、测试和验证,并将实验结论和测试工程在此分享,希望能对大家的研发和优化有所帮助。一、官方文档Unite 2017 国外技术专场中,Arturo Núñez在《Shader性能与优化专题》中的原话是:Use MaterialPropertyBlock Is faster to set properties using a MaterialPropertyBlock rather than material.SetFloa

2020-12-26 12:10:37 891

原创 unity timeline的使用

一、简单了解timeline 可以用来做什么?所以,timeline 可以用来做一些技能技能,剧情动画等等,想剪辑视频一样,在时间先做做各种动画,配音等操作。二、简单使用1 在window/secquencing打开timeline编辑窗口2 在场景中穿件TimelineGo的Gameobject3 在Hierarchy中选中TimelineGo,并点击timeline编辑窗口的创建,如下图4 保存文件到Asset 下面可以看到TimelineGo上自动挂载了两个组件5 选中Timeli

2020-12-26 12:09:48 1726 2

转载 SourceTree 的基本

最近做项目中使用了sourcetree工具,一开始认为很简单所以也没专门的学习一下;但出现了一次由于对操作的理解失误导致项目文件混乱的问题,所以决定还是记录一下source tree的常用功能。转载自:https://blog.csdn.net/u012230055/article/details/64125268一 、SourceTree简介SourceTree 是 Windows 和Mac OS X 下免费的 Git 和 Hg 客户端,拥有可视化界面,容易上手操作。同时它也是Mercurial和S

2020-12-24 09:53:38 452

原创 Unity UGUI Text背景适应文字,多层排版的时候Parent has a type of layout group component

在使用Text 和 Content Size Fitter 还有Layout进行布局的时候,如果设计到多承嵌套往往会懵逼,比如我们需要做一套向下面的UI最外面有排序,Content里面的Text 内容不确定,需要自适应。这时候很容向到的预制体方案是Scroll View--Viewport----Content [Content Size Fitter] Vertical Fit: Preferred Size [Vertical Layout Group]

2020-12-21 16:27:42 4802 3

原创 Unity Manual文档打开慢,搜索慢的问题

一般在使用Unity 的时候,会经常需要用的文档,而Unity 提供了一个非常便捷的功能就是在你想要查询的组件旁边都有一个help按钮可以通过连接直接跳转的相应的文档界面。但是由于在国内,打开文档的速度其实是非常慢的,而使用检索的速度也非常慢,大大影响了使用效率,如果你电脑一直连着vpn的可能体验好一些。找了下网上别人发的方法,发现可通使用离线Manual来解决问题,具体方法就是:1 先获得离线文档https://storage.googleapis.com/localized_docs/zh_

2020-12-16 10:18:12 592

转载 Unity 2D常用Shader

前言Shader效果常用于3D模型,但2D图也有不少常用的效果,例如:圆角头像,图片灰态,边缘着色等等,下面我就依次做一个介绍。图片灰态效果核心思路在片元着色器里面对每个图元进行采样,将图元的颜色x,y,z分别乘上灰度系数然后赋值给片源颜色,就将彩色变成了灰色了。代码//-----------------------------------------------【Shader说明】-------------------------------------------------------

2020-12-08 09:41:26 4754 1

转载 C# using的用法

1.在文件顶部引用命名空间,如:using System;2.为命名空间或类型定义别名;如果命名空间过长,键入时会比较麻烦,如果该命名空间会在代码中多次调用的话,那么为命名空间定义别名,是比较明智的选择,并且还能够避免类名冲突!是不是很机智啊?!using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI;using System.Web.UI.WebC

2020-12-02 11:08:02 270

原创 关于Unity Mono .Net C# 需要了解的一些东西

1 可阅读的一些文章https://blog.csdn.net/qq_39604302/article/details/89888022介绍了一些给予Mono的Unity 开发环境,编译环境中的一些概念。Mono -> IL2CPPhttps://blog.csdn.net/zhurongboyitu/article/details/78709308.Net 是一套标准.Net 的三种实现 .Net Framework、.Net core、Monohttps://www.cnblogs

2020-12-01 17:14:50 179 1

原创 unity中 c# if 判断中的 null

从c++ 转过来的,对于某个类的空判断一直习惯用if(clssInstance) 或者 if (!clssInstance) ,转过来Unity 发现 有些类可以if(clssInstance) 但是有些类只能if(clssInstance != null),最近了解才知:继承UnityEngine.Object的类才能if(clssInstance),因为UnityEngine.Object实现了对bool的隐式转换public static implicit operator bool(Ob

2020-11-29 23:51:42 2182

转载 C# 协变、逆变 看完这篇就懂了

原标题:C# 协变、逆变 看完这篇就懂了转自:Virgil-Zhoucnblogs.com/VVStudy/p/11404300.html一、基本概念官方:协变和逆变都是术语,前者指能够使用比原始指定的派生类型的派生程度更大(更具体的)的类型,后者指能够使用比原始指定的派生类型的派生程度更小(不太具体的)的类型。公式:协变:IFoo<父类> = IFoo<子类>;逆变:IBar<子类> = IBar<父类>;暂时不理解没关系,您接着往下看。

2020-11-07 13:10:29 1017

转载 深入理解C#中的IDisposable接口

写在前面在开始之前,我们需要明确什么是C#(或者说.NET)中的资源,打码的时候我们经常说释放资源,那么到底什么是资源,简单来讲,C#中的每一种类型都是一种资源,而资源又分为托管资源和非托管资源,那这又是什么?!托管资源:由CLR管理分配和释放的资源,也就是我们直接new出来的对象;非托管资源:不受CLR控制的资源,也就是不属于.NET本身的功能,往往是通过调用跨平台程序集(如C++)或者操作系统提供的一些接口,比如Windows内核对象、文件操作、数据库连接、socket、Win32API、网络等。

2020-10-02 19:55:25 561

转载 c#中的析构函数

析构函数析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数。析构函数往往用来做“清理善后” 的工作(例如在建立对象时用new开辟了一片内存空间,应在退出前在析构函数中用delete释放)。以C++语言为例,析构函数名也应与类名相同,只是在函数名前面加一个波浪符,例如stud( ),以区别于构造函数。它不能带任何参数,也没有返回值(包括void类型)。只能有一个析构函数,不能重载。如果用户没有编写析构函数,编译系统会自动生成一个缺省

2020-10-02 19:31:23 293

原创 unity Vector2 与 Vector3的转换

一开始看到 Vector2 对象和Vecto3可以相互赋值的时候还以微这两者是重载了=号运算符,可是当到两个类中去找的时候,并没有招到相应的代码,然后才发现=号是无法重栽的,c#可以通过以下放下定义不同类的显示或者隐式的转换规则 public static implicit operator byte(Digit d) => d.digit; public static explicit operator Digit(byte b) => new Digit(b);具体可以参

2020-10-02 19:03:20 4553

转载 2020-10-02

垃圾收集机制Lua manages memory automatically by running a garbage collector to collect all dead objects(that is, objects that no longer accessible from Lua)垃圾收集器GC可以自动执行也可以手动设置collectgarbage()垃圾收集器GC会自动回收引用计数为0的对象全局声明的对象在Lua中并不认为是垃圾且不会自动被回收,需开发人员手动回收。当手工

2020-10-02 17:42:27 61

原创 Unity 输入事件小结

之前在做项目的时候别untiy 的各种交互事件搞懵了, UGUI交互事件,场景物体交互事件, 全局输入事件,所以做了一下小结顺便带一下, 如果是UI和3D世界都需要相应点击事件的华,简易用EventSystem那一套,这样的话UI事件和3D世界的点击就会好处理一些。...

2020-10-02 17:01:13 133

原创 C#隐式实现接口成员与显示实现接口成员(C# 接口实现的方式)

C# 接口实现的方式C#在类中实现接口。实现接口的类必须包含该接口的所有成员的实现代码,且都是公共的。实现接口成员有隐式实现和显式实现两种方法。1. 隐式实现如下图所示,类MyClass隐式地实现了接口IMyInterface的DoSomething和DoSomethingElse两个方法。对于隐式实现的成员,既可以通过类对象实例来访问,也可以通过接口来访问。如Main函数所示,两种调用方法都能成功。<span style="font-size:12px;">namespace Ch10

2020-10-02 09:48:59 1021

转载 C#深入学习:泛型修饰符in,out、逆变委托类型和协变委托类型

在C#中,存在两个泛型修饰符:in和out,他们分别对应逆变委托和协变委托。我们知道,在C#中要想将一个泛型对象转换为另一个泛型对象时,必须要将一个泛型对象拆箱,对元素进行显式或隐式转换后重新装箱。例如:List<Object> lobject=new List<Object>(){"0","1","2"};List<int> lint=new List<int>();foreach(Object obj in lobject){ lint.Add((

2020-10-02 09:26:17 738

转载 unity 怎样在UI界面上渲染3D模型或者spine

有时候在 游戏中,我们会需要在UI上面显示3d模型(例如角色选择、装备选择、装备预览等等),这时候我们就要用到RenderTexture和UI里面的RawImage。具体做法就是新建一个RenderTexture资源,将它命名为texture_1好了,并在画布上新建一个RawImage,将RawImage的Texture设置为我们刚刚建好的texture_1,接着新建一个Camera,让需要渲染的3d模型处于此Camera视线内,最后将此Camera的TargetTexture设置为texture_1就可以

2020-08-09 20:23:04 1628

原创 lua小技巧——lua全局变量的检测

相信用lua的人都遇到过由于拼写错误把局部变量变成全局变量的情况,如何避免这个问题呢?直接上代码! local mt = { __index = function(_, key) local info = debug.getinfo(2, "S") if info and info.what ~= "main" and info.what ~= "C" then print("访问不存在的全局变量:"

2020-08-09 20:15:33 895

转载 浅谈Unity中的MonoBehaviour

从第一次在unity创建C#脚本开始就会发现每个脚本都继承了一个叫MonoBehviour的类,那么MonoBehaviour是做什么的呢?首先明确一点,Unity引擎将所有的代码的执行都放在了一个主线程中,Update,FixedUpdate等都是按照Unity调度机制依次自行,没有任何一个地方是并行执行的,都是依次执行的。一层层进入MonoBehaviour父类,不妨看出MonoBehaviour间接继承了Component,所以继承自MonoBehaviour脚本的作用其中之一就是充当组件的角色

2020-08-09 00:50:19 3572

原创 c#获取枚举的下一个值

如何在C#中获取下一个(或上一个)枚举值(How to get next (or previous) enum value in C#)我们经常会流程相关的枚举代码,或者枚举值有端点的代码可以想到的一种方法public enum eRat { A = 0, B=3, C=5, D=8 };Array a = Enum.GetValues(typeof(eRat));int i=0 ;for (i = 0; i < a.GetLength(); i++){ if (a.GetV

2020-08-09 00:24:57 893

原创 Unity中游戏暂停和开始怎么实现?

(1)Time.timeScale = 0可以暂停游戏,Time.timeScale = 1恢复正常,但这是作用于整个游戏的设置,不单单是当前场景,记得在需要的时候重置回Time.timeScale = 1。当然也可以使用Time.timeScale来做游戏的1倍、2倍整体加速。(2)timeScale影响的因素:设置Time.timeScale = 0 将会暂停所有和帧率无关的事情。这些主要是指所有的物理事件和依赖时间的函数、刚体力和速度等,而且FixedUpdate会受到影响,会被暂停(不

2020-08-09 00:10:43 4135

转载 Unity碰撞器和触发器的总结

要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器,刚体可以让物体在物理影响下运动。碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。物体发生碰撞的必要条件:两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。在unity3d中,能检测碰撞发生的方式有两种,一种是利用碰撞器,另一种则是利用触发器。碰撞器:包含了很多种

2020-08-09 00:04:34 841

原创 c# 对系统类进行扩展

using UnityEngine;using System.Collections;using System.Collections.Generic;namespace zymShine{public static class ListExtentions{public static void SafeForeach(this IEnumerable<System.Object> thiz, System.Action<System.Object> action){

2020-08-04 21:16:03 175

原创 c# 数据结构

一.前言Unity3D是如今最火爆的游戏开发引擎,它可以让我们能轻松创建诸如三维视频游戏、建筑可视化、实时三维动画等类型的互动内容。它支持2D/3D游戏开发,据不完全统计,目前国内80%的手机游戏都是用Unity3D开发。由于Unity3D在开发过程中使用最多的是C# 语言,所以就要合理的使用C#提供的一些数据结构是非常有必要的,合理的选择数据结构可以加快开发速度,提高游戏运行性能,不合理的使用数据结构则会导致游戏运行性能降低,加大开发复杂程度!先通过表格看看常用的数据结构:C#常用数据结构

2020-08-04 18:33:05 184

原创 Unity中常用的Attribute

前言:在使用Unity3D的过程中,会经常用到许多的特性Attribute,我基本上把官方文档里列出的都记录下来,不定期更新一、HelpURLAttribute从字面意思理解,是查看帮助时,跳转到指定的页面。如下图:对应着蓝色小书的图标,点击以后会跳转到配置的URL。二、RangeAttribute:限定int或float的取值范围。Attribute used to make a float or int variable in a script be restricted to a sp

2020-08-01 18:23:14 728

原创 lua内置函数

lua内置函数最后发布:2018-09-28 10:51:28首发:2018-09-28 10:51:28•assert(value) - 检查一个值是否为非nil, 若不是则(如果在wow.exe打开调试命令)显示对话框以及输出错误调试信息•collectgarbage() - 垃圾收集器. (新增于1.10.1)•date(format, time) - 返回当前用户机器上的时间.•error(“error message”,level) - 发生错误时,输出一条定义的错误信息.使用pcall

2020-08-01 16:34:04 266

原创 c# 关键词out 和 ref区别

首先:两者都是按地址传递的,使用后都将改变原来参数的数值。其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空,所以你必须初始化一次。这个就是两个的区别,或者说就像有的网友说的,ref是有进有出,out是只出不进。ref(C# 参考)ref 关键字使参数按引用传递。其效果是,当控制权传递回调用方法时,在方法中对参数的任何更改都将反映在该变量中。若要使用 ref 参数,则方法定义和调用方法都必须显式使用 ref 关键字。

2020-08-01 16:28:01 97

原创 delegete / event / unity.event / Unity Action

简介实例简单调用using UnityEngine;public class DelegateExample : MonoBehaviour { //Step1. 定义类型----为Delegate定义一种函数原型 public delegate void MyDelegate(int args); //Step2. 声明变量----声明一个Delegate变量 public MyDelegate myDelegate; private void St

2020-08-01 16:13:09 159

原创 游戏中常见的开发模式

游戏开发中常用的设计模式使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的。但是在“四人帮”的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游戏项目引擎设计并没有很多的利用价值。根据经验,精挑细选后,笃志在这里记录一些自认为有利用价值的设计模式,以便之后自己设计时使用。一:观察者Observer观察者的设计意图和作用是: 它将对象与对象之间创建一种依赖关系,当其中一个对象发生变化时,它会将这个变化通知给与其创建关系的对象中,实现自动化的通知

2020-08-01 11:05:58 944

原创 unity - lua 端的网络处理

在我目前在做的项目中除战斗相关部分,大部分的业务逻辑都是由lua来实现的。所以lua端的网络相关的代码需要解决以下几个问题1protobuflua 使用protobuf 具体可以百度下我使用的是以下这个解析库 https://github.com/starwing/lua-protobuf/blob/master/protoc.lua2枚举将所有枚举遍历单独取出,以便后续在代码中使用 pbEnums = {}; local pb_types = ""; -- pb_typ

2020-08-01 10:42:46 345

原创 xlua 面向对象

--[[-- Lua面向对象设计--]]--保存类类型的虚表local _class = {}local _className = {} ClassType = { class = 1, instance = 2,} function BaseClass(classname, super) assert(type(classname) == "string" and #classname > 0) -- 生成一个类类型 local class_type = {}

2020-07-23 23:55:32 423

原创 DISC 测评结果

https://www.xjy.cn/ceping/new/question/id/7.html行为特征调解者的这种行为模式,通常被称为典型的"技术"类型行为图示.这种行为类型的个体,因为其行为融合了精确性以及对于任务有始有终的耐心态度,通常适合于类似财务,编程或者工程技术类的职业.他们对于自己的工作与任务有着极高的标准与要求,通常也竭尽全力确保任务结果的高品质.他们理性冷静,对于事物有着自己的理解与诠释,通常保留自己的情绪与意见,除非被要求,否则很少公开自己的想法.交流沟通调解者在人际的交流沟通

2020-06-09 12:41:01 851

原创 SSM整合通用mapper(tk.mybatis)

SSM框架 spring4.0.2+mybatis3.2.6 maven工程不会搭建框架的小哥们请自行前往这个大神的博客搭建,本博文只针对于通用mapper插件SSM搭建入口http://blog.csdn.net/gebitan505/article/details/44455235废话不多说首先引入依赖(版本我用的都是最新的):代码块中有左边这个span标签,我不知道怎么弄了去,你们引用的时候直接替换掉就行了。<!-- 通用mapper --> <dependency

2020-06-02 21:37:30 657

原创 SSM(mybatis)查数据库下划线和javaBeans驼峰映射, 在applicationContext中配置mapUnderscoreToCamelCase即可

Mybatis配置自动识别驼峰 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <!-- mybatis配置自动识别驼峰--> <property name="configuration">

2020-06-02 21:09:00 396

转载 web开发需要了解的网络知识

来源:简书 - Jerry4me链接:http://www.jianshu.com/p/21b5cbac0849(点击尾部阅读原文前往)前言作为一名程序员, 不可能不与网络打交道. 现在我们的手机, 电脑, 不夸张地说, 离开了网络就是一块‘废铁’, 它们的作用将大打折扣… 本文的作用呢,主要是针对不是非网络专业开发的人员准备的, 以‘最短的时间, 了解计网最多的知识’为前提起笔.概述先来了解下各种我们知道, 但是不太了解的专业名词的意思因特网因特网因特网是当今世界上最大的网络, 是”.

2020-05-24 22:25:16 804

原创 ssm框架基本思维图

红色的地方需要着重去掌握。

2020-05-24 21:30:53 451

原创 mysql 的一二级缓存介绍

Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,我们使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL,因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,并且缓存没有超时的情况下,SqlSession都会取出当前缓存的数据,而不会再次发送SQL到数据库。补充说明:SqlSession的生命周期每个

2020-05-18 11:22:47 3154

原创 深入理解Java集合之---Queue

Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Deque接口。Queue的实现1、没有实现的阻塞接口的LinkedList: 实现了java.util.Queue接口和java.util.AbstractQueue接口内置的不阻塞队列: PriorityQueue 和 ConcurrentLinkedQueuePriorityQueue 和 ConcurrentLinke

2020-05-17 21:20:51 143

转载 深入理解Java集合之---Deque

Dequeinterface Deque <E>子接口BlockingDeque <E>实现类:ArrayDequeConcurrentLinkedDequeLinkedBlockingDequeLinkedList线性集合,支持两端的元素插入和移除。Deque是double ended queue的简称,习惯上称之为双端队列。大多数Deque 实现对它们可能包含的元素的数量没有固定的限制,但是该接口支持容量限制的deques以及没有固定大小限制的dequ

2020-05-17 20:29:57 246

空空如也

空空如也

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

TA关注的人

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