- 博客(74)
- 资源 (21)
- 收藏
- 关注
原创 Unity平行光源方向_WorldSpaceLightPos0自定义
概述最近美术这边有个需求,角色光照不受场景的影响。就是说,调整场景主光源的方向,强度,颜色,角色不能跟着调整。于是研究了一番,颜色和强度好实现,主要就是光源的方向,最后实现效果截图。光源方向:自定义光源方向材质面板可以看到自定义光源方向跟主光源方向是一致的。具体实现Unity 内置光源方向 _WorldSpaceLightPos一个普通的光照shader,ambient+ d...
2020-02-10 18:48:57
6457
4
原创 用Standard核心自定义PBR Shader
上个MMO项目结束有段时间了 ,最近开始新的沙盒项目了,把自己这段时间遇到的问题都整理整理,分享出来。本文主要讲解如何用Unity Standard核心来快速的实现自定义PBR Shader,给大家一些简单的参考意见。话不多说,直接上代码:Shader "Custom/SimplePBRTest"{ Properties { _AlbedoMap("AlbedoMap"...
2019-09-23 20:18:50
1160
原创 StrangeIOC MVCS框架介绍及简单实现
先来看看MVCMVC(Model-View-Controller)是最老牌的的思想,其中Model就是作为数据管理者,View作为数据展示者,Controller作为数据加工者,Model和View又都是由Controller来根据业务需求调配,所以Controller还负担了一个数据流调配的功能。 分工总结: 视图(View):用户界面 ...
2018-04-27 11:38:06
1133
原创 Mesh info
Mesh一些基本内容,用于备忘,请忽略。属性Mesh的属性如下表描述:属性 说明vertices 网格的顶点数组normals 网格的法线数组tangents 网格的切线数组uv 网格的基础纹理坐标uv2 如果存在,这是为网格设定的第二纹理坐标bounds...
2018-04-27 11:34:44
781
原创 Unity游戏启动时都干了些啥
前面几个月公司,项目进行大版本更新,事比较多,就耽搁了,最近闲下来了就开始整理下,之前写的东西。Unity游戏在启动的时候会加载一些默认的资源,这些资源包括Texture、Shader、Mesh等等。下面分为两部分细说:那些资源会打包进游戏包既然要测试,就得有工程是吧。好,我们用Unity创建一个空工程,工程中就一个场景如图:这个场景中的所有对象都删除(包括MainCamera...
2018-04-27 11:29:24
4599
原创 Unity游戏状态脚本控制思考(二)
最近忙着项目上线,一摊子事,好久没更了,于是乎补上一更。 上一篇聊到Unity的脚本控制,这一篇就细说下Unity的实现原理. 核心点C#脚本+Mono+C++ UnityEngine里的核心类似这么写的:public class Component { private IntPtr native_handle=IntPtr.Zero; [Method
2017-12-20 20:46:40
946
原创 Unity游戏状态脚本控制思考
最近忙,好久没法博客的,见谅。 突发奇想,Unity的各个脚本是怎么有条不紊运作的,于是自己简单的用C#控制台程序模拟下,只是理下思路,具体的流程自己去体会,轻喷,不啰嗦,直接上代码。首先是游戏脚本接口,如下: interface IGame { void Awake(); void Start();
2017-11-07 10:17:07
728
原创 VSCode 调试tolua(xlua、slua、ulua通用)
Unity+lua开发调试起来还是比较蛋疼,介绍几个简单的调试方法LuaStudioLuastudio调试lua还是挺方便的,直接注入到Unity进程即可方便的调试,需要注意的是lua代码如果是AssetBundle形式存在的话,会出现乱码,解决方法就是调试的时候不启用AssetBundle。 其他的就很简单了,这个luastudio做的真心不错,但是收费洛。VSCode+luaIde轻量级的VS
2017-10-09 17:35:25
21047
1
原创 Compute Shaders
介绍CPU在面对大规模个体时计算能力就显的不足了,我们知道GPU天生的并行架构给它带了强大的计算能力,那么我们能否用GPU去分担CPU的压力呢,从而摆脱计算的瓶颈。答案是肯定的。官方链接:https://docs.unity3d.com/Manual/ComputeShaders.html看下官网给的定义:Compute shaders: Compute shaders are progra
2017-09-18 18:32:39
1071
原创 Unity 水波纹Shader
今天来个炫酷的点击屏幕实现水波纹的特效,先上两张效果图。放大下看下细节,当然还有好多效果,自己发挥了。。。直接上代码,注释已经写了哦 Shader "Custom/ClickStyle" { Properties { [PerRendererData]_MainTex("Sprite Texture",2D)="white"{}
2017-09-08 17:16:35
9436
2
原创 Unity 如何发布到Mac App Store
最近蛋疼的需要发布unity游戏到Mac App Store,网上的教程不太多,第一搞有点蛋疼,各种证书搞糊涂了,就这机会恶补下apple的相关证书。其实官网给了教程, http://docs.unity3d.com/Manual/HOWTO-PortToAppleMacStore.html官网上大概描述了整个事情的流程,但是各种细节还待完善。下面就整个过程整理如下:申请证书需要到 https://
2017-08-10 11:35:28
2708
3
原创 Unity Android平台接入支付宝
额,最近折腾在unity项目中接入支付宝,记录下流程。 先来个官方文档:https://docs.open.alipay.com/204/106079/配置创建应用,配置应用参考上面的给的官网文档。支付宝SDK链接 https://doc.open.alipay.com/doc2/detail.htm?treeId=54&articleId=104509&docType=1下载SDK&Demo。解
2017-07-21 11:33:03
3807
1
原创 unity中的单元测试
前端时间研究了软件的开发方法,于是打算引进TDD(测试驱动开发)。TDD的优缺点就不细说了,网上一搜一大把。unity中常用的测试工具1.NUnitunity5.3以后已经在Editor中集成了测试模块,该测试模块依托于http://nunit.org/2.Unity Test ToolUnity官方还推出了一款测试插件Unity Test Tool(基于NSubstitute),除了单元测试之外还
2017-07-13 14:30:58
3424
原创 极限开发与敏捷开发
之前一直接触极限开发和敏捷开发,但是具体说说他们的含义与联系时就有点尴尬了,不知道如何描述了。于是就静下心来好好整理整理。介绍2001年,为了解决许多公司的软件团队陷入不断增长的过程泥潭,一批业界专家一起概括出了一些可以让软件开发团队具有快速工作、响应变化能力的价值 观和原则,他们称自己为敏捷联盟。敏捷开发过程的方法很多,主要有:SCRUM,Crystal,特征驱动软件开发(Feature Dri
2017-07-12 11:58:27
667
原创 软件开发模式详解
软件开发模型类型1. 边做边改模型(Build-and-Fix Model) 好吧,其实现在许多产品实际都是使用的“边做边改”模型来开发的,特别是很多小公司产品周期压缩的太短。在这种模型中,既没有规格说明,也没有经过设计,软件随着客户的需要一次又一次地不断被修改。 在这个模型中,开发人员拿到项目立即根据需求编写程序,调试通过后生成软件的第一个版本。在提供给用户使用后,如果程序出现错误,或者用户提
2017-07-12 11:56:53
1174
原创 unity 加密、防止反编译、mono编译
最近再弄unity的打包安全的问题,下面就记录下自己搞定整个过程踩过来的坑吧,一方面留个记录,另一方面给新手一个指引。为什么要加密呢这个问题怎么说呢?打个比方吧,就好比人为什么要穿漂亮衣服打扮下自己一样,无非是不让别人看到不改看的地方。。。此处省略一万字。。。那些东西要加密呢其实我看大牛们的博客,直接了当,直接讨论加密方法,原理,新手一开始就搞的云里雾里,这里主要照顾到新手,老鸟直接自行略过即可。u
2017-06-21 14:26:13
11340
4
原创 Unity Ads接入
Unity 自带广告接入方式:1.打开unity services 页面 (Window→Services)2.打开Ads开关3.选则Enable test mode 选项4.看下Advanced选项,注意gameid后面脚本要用到5.写脚本挂在任意一个物体上(相机或者空物体都行) using System.Collections; using System.Collections.
2017-06-21 10:48:59
4764
原创 Linux中yum命令镜像源出错解决方案
好头疼,最近虚拟机中的linux系统一直不能安装东西,只要install就报找不到可用的链接源。。。但是要安装东西啊,所以就着手解决下。解决方法:更换源1.备份mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup2.下载新的CentOS-Base.repo 到/etc/yum.repos.d/
2017-06-21 10:46:38
10819
3
原创 linux下编译lua源码
步骤: 1.下载lua包 wget -c http://www.lua.org/ftp/lua-5.3.4.tar.gz2.解压lua包 tar zxvf lua-5.3.4.tar.gz 3.安装readline (如果安装过了跳过)yum -y install readline-devel ncurses-devel4.进入lua解压目录 cd lua-5.3.45.编译make li
2017-06-21 10:37:13
1987
原创 7.桥接模式
介绍在软件系统中,某些类型由于自身的逻辑,它具有两个或多个维度的变化,那么如何应对这种“多维度的变化”?如何利用面向对象的技术来使得该类型能够轻松的沿着多个方向进行变化,而又不引入额外的复杂度?核心要点“将抽象部分与实现部分分离,使它们都可以独立的变化”例子using System;using System.Collections.Generic;using System.Linq;using
2017-06-06 11:09:51
456
原创 6.适配器模式
介绍由于应用环境的变化(例如使用语言的变化),我们需要的实现在新的环境中没有现存对象可以满足,但是其他环境却存在这样现存的对象。那么如果将“将现存的对象”在新的环境中进行调用呢?使得新环境中不需要去重复实现已经存在了的实现而很好地把现有对象(指原来环境中的现有对象)加入到新环境来使用。核心要点“把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作”例
2017-06-06 11:09:08
440
原创 5.原型模式
介绍当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中分配了多个一样的类实例对象,然后如果采用工厂模式来创建这样的系统的话,随着产品类的不断增加,导致子类的数量不断增多,反而增加了系统复杂程度,所以在这里使用工厂模式来封装类创建过程并不合适,然而原型模式可以很好地解决这
2017-06-05 12:10:09
447
原创 4.建造者模式
介绍在软件系统中,有时候面临一个”复杂对象”的创建工作,其通常由各个部分的子对象用一定算法构成;由于需求的变化,这个复杂对象的各个部分经常面临着剧烈的变化,但是将它们组合到一起的算法却相对稳定。如何应对种变化呢?如何提供一种”封装机制”来隔离出”复杂对象的各个部分”的变化,从而保持系统中的”稳定构建算法”不随需求的改变而改变?核心要点“将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建
2017-06-05 12:09:30
556
原创 Blend详解
先上一张官方图,看下流程:FragmentShader之后会进行AlphaTest,最后会经过Blending,才会写入缓冲区。Blend 指令默认是关闭的。 Blend OffBlend操作公式:Blend SrcFactor DstFactor这里的SrcFactor和DstFactor参数参见官网:https://docs.unity3d.com/Manual/SL-Blend.html当使用
2017-05-25 15:53:41
6141
原创 图层颜色叠加
整理了下图层叠加的计算公式都在下面这些教程里:http://www.cgspread.com/3551.htmlhttp://www.68ps.com/zt/CS5/hh_zhengchang.htmhttp://www.jb51.net/photoshop/249182_2.htmlhttps://en.wikipedia.org/wiki/Alpha_compositing比方说两个图层正常叠加
2017-05-25 15:51:25
1136
原创 ugui屏幕坐标和世界坐标关系详解
本文主要分析ugui的屏幕坐标和世界坐标的关系,至于ugui的属性参考其他的文章学习下。本文以一个RawImage为例,目录结构如图:RawImage的属性如图:这里为了方便观察把pivot设置为左上点(0,1)注意: //获取UI坐标系的2D坐标,就是X,Y值 GetComponent<RectTransform>().anchoredPosition; //获取UI坐标系的3D坐标, Ge
2017-05-24 13:43:23
7924
原创 拖拽物体脚本
需求鼠标按下选择某个物体,拖拽,松开后停止拖拽实现代码 using System.Collections; using UnityEngine; public class DragObject : MonoBehaviour { //目标物体的屏幕空间坐标 private Vector3 _vec3TargetScreenSpace;
2017-05-23 15:27:31
987
原创 UGUI Tab键切换InputField
需求游戏登录界面输入框之间的跳转用tab去实现代码 using UnityEngine; using System.Collections; using UnityEngine.EventSystems; using UnityEngine.UI; /// <summary> /// UGUI Tab键切换InputField /// </sum
2017-05-22 16:37:41
3661
原创 cg输入输出匹配规则
最近论坛看到有人提出这样的问题:Shader "Unlit/testinout"{ SubShader { Pass { CGPROGRAM #pragma vertex vert #pragma fragment frag void vert(in fl
2017-05-22 15:31:03
1142
原创 3.抽象工厂模式
介绍工厂方法模式是为了克服简单工厂模式的缺点而设计出来的,简单工厂模式的工厂类随着产品类的增加需要增加额外的代码,而工厂方法模式每个具体工厂类只完成单个实例的创建,具有很好的可扩展性。但是在现实生活中,一个工厂只创建单个产品这样的例子很少,因为现在的工厂都多元化了,一个工厂创建一系列的产品,如果我们要设计这样的系统时,工厂方法模式显然在这里不适用,然后抽象工厂模式却可以很好地解决一系列产品创建的问题
2017-05-22 12:10:40
645
原创 2.工厂方法模式
工程方法模式和简单工程合并成同一个模式,所以标题都用2了。。。不要在意这些细节介绍简单工厂模式的缺点很明显,简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,工厂方法模式可以解决简单工厂模式中存在的这个问题。核心要点“一个工场只能生产单个东西。”工厂接口,实现不同的工厂把具体产品的创建推迟到子类中,此时工厂类不再负责所有产品的创建,而只是给出具
2017-05-22 12:09:51
763
原创 阿里云服务器(Centos7.3)搭建wordpress博客系统
windows下的wordpress连接最近免费体验了阿里云,领取了半年的云服务器ECS,附上链接https://free.aliyun.com/?spm=5176.8112568.738194.1.WBKcDm&type=personal先获取云服务器,当然土豪可以直接购买,下面介绍下如何在阿里云上搭建wordpress系统。系统环境:centos7.3 大体步骤: 1.安装LAMP服务器
2017-05-22 10:57:24
9463
原创 2.简单工厂
使用环境某个对象具有类似的功能,比方说饭馆、汽车厂等等简单例子//基类 线条class Line{ public string Name { get; set; }} //带箭头的线条 class ArrowLine:Line { public ArrowLine() {
2017-05-18 18:08:32
706
原创 1.单例模式
使用环境 某个对象只需要一个实例的情况,比方说GameManager,ResourceManager简单例子 using System; namespace 单例模式 { class Singleton { // 定义一个静态变量来保存类的实例 private static Singleton
2017-05-18 15:32:21
711
原创 tolua在unity版本升级到5.4之后报错修复
unity版本从5.3升级到5.4之后问题不是很大,只需要修改写命名空间即可。升级到5.5版本之后就需要修改些:1.ToLuaExport类中 public static List memberFilter = new List 中增加 "MonoBehaviour.runInEditMode", "Light.lightmappingMode", "Light.lightma
2017-05-18 15:08:34
3384
原创 设计模式的六大原则
想要学好设计模式,先得了解设计模式的六大原则.单一职责原则这个原则简答,但是也是最易忽略的。说白点就是,一个类只负责一项职责,一个函数只负责一个功能,尽量降低对其他功能的影响。里氏原则这项原则最早是在1988年,由麻省理工学院的一位姓里的女士(Barbara Liskov)提出来的。使用继承时,遵循里氏替换原则。 里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含
2017-05-12 18:35:55
866
原创 设计模式专题
设计模式对于程序员来说是很重要的,它就像一个武器库,在不同的场景中,你可以从这个武器库里挑选自己得心应手的兵器,获得不同的buff加成。哈哈,好的设计模式是让自己在开发中得心应手,不是为了套用某个模式而选择一些很奇怪的做法。一句话概括下就是,“设计模式是为了更好的服务项目,而不是限制项目,如果你觉得没必要,当然可以不适用”。每个人都有自己的理解,千篇一律的不一定就是真理,但是千篇一律至少能给我们提供
2017-05-12 18:35:19
796
原创 爬虫-百度贴吧帖子
目的对百度贴吧的任意帖子进行抓取指定是否只抓取楼主发帖内容将抓取到的内容分析并保存到文件过程URL格式分析比如:http://tieba.baidu.com/p/3138733512?see_lz=1&pn=1,这是一个关于NBA50大的盘点,分析一下这个地址。1. http:// 代表资源传输使用http协议2.tieba.baidu.com 是百度的二级域名,指向百度贴吧的服务器。
2017-05-10 14:58:43
1105
原创 Lua协程例子
lua的协程是好东西,跟unity的协程还是不太一样,下面写了一个例子,直接上代码:co=coroutine.create(function () -- body print "hi coroutine";end)print(type(co));print(coroutine.status(co));coroutine.resume(co)print(coroutine.
2017-05-10 11:30:24
1339
Distort.unitypackage
2020-03-05
ShaderForge for Unity2018.3andNew.unitypackage
2019-09-27
Unity compute shader模拟群组行为
2017-09-18
Unity 水波纹 Shader
2017-09-08
Easy Touch 5 Touchscreen Virtual Controls v5.0.8 (Apr 20, 2016).unitypackage
2016-10-25
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人