自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Cco丶

学海无涯

  • 博客(79)
  • 资源 (2)
  • 收藏
  • 关注

原创 UI Tool Kit 使用

Unity UIToolKit

2023-06-17 12:54:09 2345

原创 Unity Package Manager 使用

git push -u origin master (提交代码到远程仓库,如果是默认主分支,也可直接使用:git push)package.json内容:可参考官方的,name 和 version 为必需字段,依赖的包 本地要有。git pull (拉取线上代码,一般为多人开发时使用,如果个人开发直接提交即可,命令可省略)后续有更新的话,修改版本号1.0.0 --> 1.0.1,git 提交到仓库。仓库创建之后的首次 提交,需要输入账户名 和密码(按照提示输入命令)在这里 就可以更新到最新的。

2023-06-06 21:03:43 853

原创 Unity 制作抖音同款 罗马时钟

这个罗马时钟 好像出来好久了在某音上,刚看到 觉得很 好玩,所以自己就想着实现一下 效果,大概用了四个小时吧。 下面直接上图先说一下制作思路:1. 文本的放置位置。2.时间的获取 和校正。 3. Text随着时间的刷新 而刷新位置主要思路就这些,然后就是 一些动画 效果。刚开始功能出来的时候,是没有 旋转那个动画的,看上去 很low。。。后面加了个 补间动画。核心代码:拿月份 来说,下面 是初始化代码,就是 位置的放置。 private void InitMonthes() .

2020-06-06 09:29:11 1172

原创 渐变纹理 和 遮罩纹理

渐变纹理纹理不仅可以定义一个物体的颜色,也可以用来存储任何表面属性。比如用渐变纹理 来控制漫反射光照结果。可以通过使用不同的渐变纹理 来控制物体的漫反射光照。Shader "Custom/RampTexture"{ Properties { _Color ("Color", Color) = (1,1,1,1) //渐变纹理 ...

2020-02-21 18:45:21 669

原创 凹凸映射

凹凸映射的目的是使用一张纹理来修改模型表面的法线,以便为模型提供更多的细节。这个方法不会真的改变模型的顶点位置。凹凸映射的两种方式:1.高度映射:使用一张高度纹理来模拟表面位移,然后得到一个修改后的法线值。2.法线映射:使用一张法线纹理来直接存储表面法线。我们通常使用 高度图和发现映射一起使用,来修改光照。法线纹理:存储的是表面的法线方向,法线方向的分量范围在[-1,1...

2020-02-21 18:28:56 574

原创 Blinn-Phong 光照模型

前面 我们使用Phong光照模型计算的高光反射,这里我们 用Blinn-Phong来实现高光反射计算。在Blinn-Phong中,没有使用反射方向,而是引入了新的矢量h,它是通过对视角方向v 和光照方向 l 相加后再归一化得到的。=(+)/(l+l)所以Blinn-Phong 模型计算高光反射公式如下:=(*)max(0,)计算如下:Shader "Custom/Sp...

2020-02-19 23:46:11 880

原创 高光反射

这里的高光反射是一种经验模型,并不完全符合真实世界中的高光反射现象,用于计算那些沿着完全镜面反射方向被反射的光线,可以让物体看起来有光泽,比如金属材质。计算高光反射需要知道 表面法线,视角方向,光源方向,反射方向等。我们使用Phong模型 来计算高光反射,公式如下:=(* )max(0,)其中:指的是 材质的光泽度--gloss即反光度。控制高光部分区域,越大,亮点就越小。...

2020-02-19 23:29:34 1607

原创 半兰伯特光照模型

由于使用漫反射光照的时候 在光照面和半光照面结合处出现了锯齿形状,影响模型的效果,Value公司 提出一种技术,在原兰伯特光照模型基础上做出了修改解决了漫反射中的的问题,依次被称为半兰伯特光照模型。广义半兰伯特计算公式:(C* M)(α()+β)没有采用max 函数来防止点积为负值,采用的是α倍的缩放和β倍的偏移。一般情况下,α和β的值均为0.5这样也可以将结果从[-1,1]映射...

2020-02-19 19:40:57 725

原创 漫反射光照模型

漫反射光照是用于被物体表面随机散射到各个方向的辐射度进行的建模。在漫反射中视角的位置是不重要的,因为反射是完全随机的,所以在任何反射方向都是随机的。但是入射光线的角度很重要。漫反射光照符合兰伯特定律:反射光线的强度 与 表面法线和光源方向之间 的夹角 的余弦值成正比。漫反射计算公式:(C* M)max(0,)n:表面法线,l:指向光源的单位矢量,Mdiffuse:材质漫反射颜色,Cl...

2020-02-19 19:10:05 1817

原创 SVN CleanUp Failed

SVN 在使用过程中 偶尔会出现 提示 你先CleanUp 再去Update 或者Commite。CleanUp 又出现Failed,很烦。这里附上 CleanUp失败解决办法,亲测有效:先下载 Sqlite3.exe 文件链接:https://www.sqlite.org/download.html下载完之后,将Sqlite3.exe 放到.svn 目录下,win10系统,在...

2020-01-16 22:30:11 201

原创 Unity可寻址系统--Addressable AssetSystem

今天是2020年的第一天,祝大家新年快乐。前些时间看到Unity官方推得 可寻址系统Addressable AssetSystem,新的资源管理加载系统。据官方说以后Unity的资源加载模块重心将会放到该系统上,又是一个亲儿子。这几天抽时间看了一下,其原理也是在AB包的基础上进行了一层高级的封装。之前 我们游戏开发过程中,需要自己去根据游戏写一套自己的资源管理加载系统,这一块牵扯到AssetB...

2020-01-01 20:38:49 4825

原创 InjectFix 代码热更

InjectFix 是腾讯最近刚开源的新的热更方案,XLua的升级版。无需写Lua代码。可以直接在Unity工程上修改C#即可更新,老项目无需修改原有代码即可使用。符合苹果热更新条款。下载地址:https://github.com/Tencent/InjectFix下载解压后,找到VSProj 文件夹下的打开编辑,修改UNITY_HOME变量的值修改为指向本机unity安装目录...

2019-11-09 11:21:43 6258 2

原创 GoogleAdMob 广告接入

谷歌广告接入For Unity直接百度进入Admob 网站:https://developers.google.cn/admob/找到for unity根据指南接入,创建 AdMob 帐号,该网站需要翻墙,申请自己的AppID,以及应用中接入的广告ID,广告分为三种:横幅式广告,插入式广告,激励广告。下载Unity 的插件,导入到Unity。在 Unity 编辑器...

2019-10-11 10:39:07 3173

原创 Unity 获取 不同平台上内存的使用情况 总结

1.PC平台 [StructLayout(LayoutKind.Sequential,Pack =1)] public struct MEMORYSTATUSEX { public uint dwLength; public uint dwMemoryLoad; //系统内存总量 public ulong ull...

2019-08-26 15:14:20 3619 5

原创 QQ登录SDK接入

本文是原生安卓SDK接入,对安卓不是很熟悉的话,可以考虑ShareSDK,直接封装好的登录分享SDK,无需在安卓层面架接,只需要在Unity里面调用相应接口即可。1.打开腾讯开放平台找到接入指南。下载移动游戏的sdk2.申请个人APP_ID.需要手持身份证 拍照认证,有点烦。3.下载的SDK包 解压如下有开发者文档,以及相应的jar包。4.创建A...

2019-08-26 14:55:44 4160

原创 C# 反射-- Reflection

反射指程序可以访问、检测和修改它本身状态或行为的一种能力,可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型。然后,可以调用类型的方法或访问其字段和属性。反射用途:它允许在运行时查看特性信息。 它允许审查集合中的各种类型,以及实例化这些类型。 它允许延迟绑定的方法和属性。 它允许在运行时创建新类型,然后使用这些类型执行一些任务。反射的优点:1、反射提...

2019-08-01 11:43:09 246

原创 渲染流水线

渲染流水线:从一个三维场景出发,生成我们在屏幕上看到的图像的过程。渲染流水线分为三个阶段:应用阶段------------>几何阶段----------------->光栅化阶段1.应用阶段:Cpu来负责,拥有绝对控制权,属于可编程阶段。该阶段准备场景数据,将渲染所需数据从硬盘加载到内存中,网格数据等被加载到显存中。不可见剔除。设置渲染状态,使用什么类型的着色器,光源属...

2019-07-16 15:43:10 235

原创 CocosCreator 制作微信小游戏排行榜,超越好友,分享功能

在每局游戏结束时,用来显示玩家 在好友中的排行,这个需要在微信提供的开放数据域中完成。微信为防止数据外泄,特地提供了开放数据域。开发者只能在子域获取数据,不能上传到外部。微信开放数据域中 计算好排行榜数据,并显示,渲染到主域的页面上。需要在主域画布下,创建一个和画布大小相同的空物体,挂载组件子域的画面 就是通过该组件渲染到挂载该组件的物体上,有点类似Unity 的RawIm...

2019-07-11 20:19:31 5990

原创 CocosCreator 打包微信小游戏

1. 下载微信开发者工具并安装,申请小游戏ID,在ccc的文件-->设置-->原生环境中,指定路径2.发布平台选择微信小游戏,填入appid,这里要注意,小程序的id 和小游戏的id不同。不能混用。3.如果包体大于4M是没法上传微信平台的。我们可以利用ccc的远程服务器 功能,把我们的资源放到远程服务器。此时可以到达8M,同时ogg格式的音乐,在ios平台是不支持的,无法播放,...

2019-07-11 16:41:57 2739

原创 CocosCreator中的刚体

最近在项目中准备让物体做自由落体运动,就想到了刚体-RigidBody。之前在Unity里面,给物体加上刚体,物体就会自己掉落下去,今天在Cocos里面 发现 好像和想象中的不一样。查了一下API,要开启物理系统才行。同时还要把刚体类型设为Dynamic。于是在Start函数里面 先实例化一个物体,然后开启了物理系统。 start() { l...

2019-07-03 22:55:21 5874 1

原创 XML和二进制文件的序列化和反序列化

1.XML文件的序列化 void Start() { TestData Data = new TestData(); Data.PlayerID = 1001; Data.PlayerName = "Test01"; Data.WeaponID = new List<int>(); Data....

2019-07-01 23:08:27 700

原创 CocosCreator 中的摇杆

前面一篇文章写了几种常见的主角控制方式,这篇文章将介绍 利用摇杆JoyStick 去控制主角。看到网上都是JS写的代码,找了一个效果不错的参考了一下,本文采用TS写的:首先查看效果图:摇杆有两种显示方式,都是平时在游戏里常见的。实现起来 和Unity 里面 的摇杆实现方式差不多,只是语言不同罢了。首先是 摇杆类: onLoad() { this...

2019-06-22 20:22:35 2733

原创 cocosCreator中常见的几种主角控制方式

1. 蛇蛇大作战主角控制方式,主角根据鼠标按下经过的轨迹移动要用到触摸事件中的touchMove事件。具体实现如下: touchStartEvent(event) { let touches=event.getTouches(); let touchPos=touches[0].getLocation(); this.isMoving=tr...

2019-06-21 20:32:13 2769

原创 CocosCreator中的键盘和屏幕触摸事件

1. 通过键盘ADWS 控制物体的八方向移动export default class TestMove extends cc.Component { //274,410(边界) isLeft:boolean; isRight:boolean; isForward:boolean; isBehind:boolean; moveS...

2019-06-21 20:16:23 4031 7

原创 Cocos Creator中 脚本之间的相互调用

之前在使用Unity开发的时候,脚本之间相互调用是很常见的,一般可以通过GetComponent方式或者 单例的模式,再或者静态方法的方式去调用其他脚本中的函数 或者变量。在CocosCreator中我们也可以使用以上的方法去调用其他脚本中的函数。typescript脚本1.单例模式单例脚本const {ccclass, property} = cc._decorator;...

2019-06-14 20:54:49 9312 2

原创 二叉树的深度优先遍历和广度优先遍历

二叉树结构简单,存储效率高,算法简单,每个结点至多有两个子树,两个子树有左右之分,次序不能颠倒。二叉树的存储结构分为:顺序存储结构和链式存储结构。1.顺序存储结构把一棵满二叉树自上而下,从左到右顺序编号,把编号依次存放在数组中,如下图所示:设满二叉树结点在数组中索引号为i,那么有如下性质:(1)如果i=0,此结点无双亲,为根结点(2)如果i>0,其双亲结点为(i-...

2019-05-16 21:26:40 13046

原创 栈和队列的实际应用

1.将一个非负的十进制整数N转换成其他D进制数。解决思路,连续取模%和整除/。D进制各数位的产生顺序是从低位到高位,而输出顺序却是从高位到低位,刚好相反,可以考虑使用栈进行逆序输出。 public static string DecConvert(int N,int D) { if (D < 2 || D > 16) ...

2019-05-14 22:23:53 5500

原创 Queue--队列

队列(Queue)和栈不同,队列是只允许在一端插入,在另一端进行删除的线性表,所有的插入操作都在队尾进行,删除操作则在队头进行。入队和出队顺序一样。由于数组在删除元素的时候,需要花费大量时间移动元素,所以基于数组的队列很少有实际应用,多采用循环队列方式。本文主要介绍也是循环队列,将一个一维数组中各个元素看成一个首尾相接的封闭圆环。两个基本操作:入队: Enqueue: 将一个数据插...

2019-05-14 20:43:29 547

原创 Unity使用adb在移动端调试

首先电脑要装有AndroidSDK,在platform-tools 下面有一个adb.exe。手机端要调成开发者模式,打开命令行,输入adb路径\adb.exe connect 手机ip.例如:D:\AndroidSDK\platform-tools\adb.exe connect 127.0.0.1:7555本文使用的是mumu模拟器调试,真机需要Root一下,原理一样。连...

2019-05-14 10:03:31 6705

原创 射击类游戏--射击辅助线的实现

最近在项目中碰到一个问题,炮台再射击物体的时候,要生成一个炮台和目标的辅助线。类似于捕鱼类游戏,在锁定目标的情况下,生成的辅助线。因为项目是3D的,所以在生成这个辅助线的时候,思考了一个下午,才得以实现。效果如下图:移动的Cube为锁定的目标,不懂得Cube为射击点。小球 为辅助线。通过计算射击点和目标的距离,来计算得到应该生成的小球个数,每次改变物体的位置,重新计算小球个数,少的...

2019-05-09 20:46:49 1943

原创 栈--Stack

在.net中,值类型在栈上分配,引用类型在托管堆上分配。栈,是线性表的特例,只能对线性表的一端进行插入和删除操作。“先进后出” 或者 “后进先出” 的特点。示意图如下:1.栈顶:允许进行数据删除和插入操作的一端2.栈底: 不允许在栈中操作的一端3.Push: 进栈,将元素放入栈顶处4.Pop :取出栈顶元素并删除栈中数据5.Peek:取出栈顶元素,不删除数据在栈中栈的简...

2019-05-02 21:50:25 121

原创 双链表

单链表中每个结点只有后继结点next 属性,在查找上一个结点的时候,很不方便,我们可以给结点添加 一个指向前驱结点的指针域,使链表进行双方向查找,这种链表就叫做双链表。示意图如下:结点信息链表结构示意图:双链表有两个指针域,所以在插入删除元素的时候,比较麻烦,一个结点要修改两个指针域,而且是有先后顺序的修改。1.结点的插入操作假如当前结点为N,在该结点前插入S结点,那么...

2019-05-02 20:54:15 211

原创 带有密码的约瑟夫问题

约瑟夫问题,归结起来就是有N个人围坐一圈,从第k个人开始报数,每次数到M的人出圈,继续从出圈的下一个人开始报数,直到最后一个人出圈,问所有的出圈顺序。和上一篇文章解决的问题不同的地方是,这次从K开始数,并不是从第一位开始。其实在解决的时候,只需要解决掉第一次数数,后面的就是和上一篇所讲的一样了。代码如下: SingleCircleLinkList list = ...

2019-04-30 21:06:43 2645

原创 约瑟夫问题

著名的法国数学家加斯帕•蒙日,曾在《数学的游戏问题》中讲了一个故事:有15个教徒和15个非教徒在海上遇险,必须将一半的人投入海中,其他的人才能幸免于难,于是想了一个办法,30个人围成一个圆圈,从第一个人开始依次报数,每数到9的人,就被扔入大海,之后从被扔入海中的下一个开始数,依次循环,直到剩余15人,问 怎么排位置,才能让扔入大海的人全为非教徒。这就是著名的约瑟夫问题。这么一想,一圈人依次...

2019-04-28 20:07:05 410

原创 带有tail指针的单向循环链表

前面在实现单链表的时候已经说到,单链表的效率问题,每次要从头结点遍历到表的尾部,所以很影响效率,我们可以将头指针改为尾部指针tail。同时让tail指针的后继结点指向头结点。这样就构成了一个环,就是单向循环链表。如下图所示:这样在添加元素的时候就不需要遍历整个链表,从而大大提高了效率。 class SingleCircleList { //元素个数 ...

2019-04-26 21:35:45 2857

原创 单链表

线性表的一种常见存在形式,链表。在链式存储的过程中,每个元素Node不仅包含元素本身的信息,还包含元素之间的逻辑信息。前驱结点包含后继结点的地址信息(指针域),可以很方便的找到后继结点的位置。今天先来认识一下单链表:每个结点除包含数据域外,只设置一个指针域,来指向后继结点,这样构成的链表就是单链表。在链表中都会有一个头指针,便于插入和删除,可以通过头结点,沿着链,遍历每一个链表中的结点。...

2019-04-26 20:27:02 147

原创 Xlua实现代码逻辑更新

之前有写过资源的热更新,但是没有去涉及到lua代码,今天写了个小demo去简单实现一下代码逻辑的更新。点击按钮,生成一个白色Cube,通过xlua给c#打补丁,让其生成一个蓝色的比例是原来三倍的Cube。下载Xlua压缩包,将xlua 导入到unity工程目录下,之前的文章有讲过怎么导入。提前在发布之前,给C#中的类之后可能要修改的打上hotfix标签,方法打上LuaCallCShar...

2019-04-23 22:01:05 1240 2

原创 Unity资源热更新

通过把StreamingAssets文件夹下的本地的资源MD5列表文件复制到persistentDataPath文件夹下和服务器上的进行对比,把有变化的资源更新替换到本地persistentDataPath文件夹,游戏在开始的时候,直接检查更新加载相应的资源。StreamingAssets文件夹,可读,不可写,通过使用UnityWebRequest加载该文件夹下资源,其他方式无法加载里面的资源...

2019-04-21 18:46:37 2826 2

原创 Unity加载本地资源

之前加载本地电脑文件都是通过www加载,但是新版Unity已经不支持这个API了。看了一下提醒,说是让用UnityWebRequest代替。命名空间同样是NetWorking,整理了一下加载常用资源的方式。1.加载本地文档 IEnumerator LoadFile() { UnityWebRequest request = UnityWebRequest.Get(...

2019-04-21 17:58:45 9608 14

原创 数据持久化路径Application.persistentDataPath

今天突然想到这个路径Application.persistentDataPath,热更的重要路径,该文件夹可读可写,在移动端唯一一个可读写操作的文件夹。移动端可以将本地的资源(资源MD5值配置表)等一些文件放到StreamingAssets文件夹下,通过Copy到persistentDataPath下与服务器的版本文件配置表作比对,完成资源的热更。为什么不在StreamingAsset文件...

2019-04-18 19:14:32 25482 5

Demo.unitypackage

Unity制作的模仿某音罗马时钟,有兴趣的朋友可以下载看看,目前没有做代码的Review,功能都有了

2020-06-06

JoyStickDemo.zip

使用ts 写的摇杆脚本,本资源包含素材,代码 ,cocos工程。

2019-06-22

空空如也

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

TA关注的人

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