- 博客(43)
- 收藏
- 关注
原创 旋转的矩形与圆的碰撞检测
问题描述在2D平面中,圆与圆检测是否发生碰撞很简单,方法即为比较两个圆心之间的距离与半径之和。而矩形与圆则需要稍微复杂一点的计算。不旋转的矩形与圆的碰撞检测不旋转,意思是矩形的边分别与两个坐标轴平行,矩形长平行于X轴,矩形宽平行于Y轴。下面是其碰撞检测的具体逻辑:参考这篇文章:怎样判断平面上一个矩形和一个圆形是否有重叠?旋转的矩形与圆的碰撞检测而对于旋转的矩形,意思是矩形的边与坐标轴...
2020-04-07 15:56:12
1557
原创 Unity屏幕效果-高斯模糊.md
效果C#层using System.Collections.Generic;using UnityEngine;using UnityEngine.Serialization;using UnityEngine.UI;public class GaussianBlurUI : MonoBehaviour{ public Camera[] blurTargetCame...
2019-11-05 23:36:20
637
原创 根据权重配置随机
/// <summary> /// 不是每次都创建一个新的map,用于减少gc /// </summary> private static readonly Dictionary<object, Vector2> _randomIntervalMap = new Dictionary<object, Vector2>();...
2019-05-17 22:48:21
486
原创 Unity小优化之美术字贴图合并以合批
Unity中的UV坐标系Unity采用OpenGL的UV坐标系,原点在左下角。了解这点,帮助我们后续重新算合并贴图后字体的每个CharacterInfo中的UV坐标。重算每个CharacterInfo的UVList<Font> CreateMergedTexture(List<Font> fontList){ var toMergedTexs = fontL...
2019-05-17 22:45:03
1429
原创 UniRx学习笔记
Aggregate(聚合)聚合方法允许对sequence应用累加器函数,也就是可以寄存变化前的值。public class TestAggregate:MonoBehavior{ ReactiveProperty<int> rx = new IntReactiveProperty(1234); void Start(){ //seed即为累加值的当前状态值,亦即变
2018-03-13 16:23:20
1608
原创 Jenkins下Unity的持续集成
理解Jenkins中的节点的概念Jenkins中最基础也最重要的一个概念叫“节点”,因为实际的工作流是运行在这个节点上的,它就像是一台 machine,也像是一个奴隶slave。Jenkins对节点的英文命令也叫做 slave,意思是指派这个“奴隶”去帮助我们完成工作。我们可以通过【系统管理】->【管理节点】进入页面进行相关的设置,包括增加、删除和修改节点。节点设置中有一些不...
2018-03-07 23:25:51
763
原创 Jenkins的Windows、Mac和Ubuntu上的安装
Windows版本安装步骤及注意事项第一步:确认Windows上安装了JDK-8ujenkins是用 java实现的一套CI框架,所以依赖java工具,安装之前务必确认已经安装好了JDK,且版本必须是1.8及其以上。如果没有安装,以下是下载JDK的链接第二步:官网下载jenkins的windows版本jenkins的Windows版本下载链接第三步:双击安装...
2018-03-07 22:11:55
331
原创 Unity3d 预制体烘焙
Unity下的烘焙一般是针对场景文件,也就是.unity 文件。使用场景文件,必然就有LoadScene这一步。LoadScene 这一步会有大量GC的工作需要Unity引擎去做,导致花费的时间比较长,这也是我们经常需要去优化的关于切场景的耗时问题。另外某些情形下,加载一个新的场景资源本身就发生在当前逻辑模块内。如点击英雄图标,模拟预览这个英雄的技能使用。基于以上的考虑,我们考虑把整个场景做成一个...
2018-02-24 22:32:59
3276
原创 ubuntu 上安装 java8的方法
sudo apt-get install python-software-propertiessudo add-apt-repository ppa:webupd8team/javasudo apt-get updatesudo apt-get install oracle-java8-installer参考:https://stackoverflow.com/questions/...
2018-02-24 22:30:54
1748
原创 Mac上如何安装Iterm2并配置Z-Shell
下载安装下载 iTerm2 http://www.iterm2.com将 iTerm2移动到应用程序文件夹下载dotfiles (可用指令 git clone http://github.com/dorayo/dotfiles.git ~/dotfiles 将其下载到本地)启动 iTerm,命令行模式输入以下指令 git clone git://github.com/robbyr...
2018-02-24 22:29:36
614
原创 Unity 混合树(BlendTree 2D)的应用
最近在玩网易代理的《我守护的一切》,里面角色头部及其眼神会跟随镜头方向,与玩家交互性增强,就好像主角一直在注视着你。就用 Unity 简单的实现了一下。 头部朝下的动作 头部朝上的动作实现 根据参数的值决定每个方向上的权重
2018-01-15 23:14:23
3705
1
原创 GC原理及优化
GC的概念:https://www.cnblogs.com/zhaoyx/articles/4133752.htmlGC的过程:http://www.jianshu.com/p/5db05db4f5abGC卡顿的原因-STW机制: http://blog.csdn.net/sinat_25306771/article/details/52374498
2017-11-12 10:45:03
930
原创 Unity性能优化总结
性能优化的点有很多,整理一下,帮助我们获取一张清晰的优化策略图 参考链接: * 内存:https://blog.uwa4d.com/archives/optimzation_memory_1.html * CPU:https://blog.uwa4d.com/archives/optimzation_cpu.html * GPU:http://blog.csdn.net/candycat19
2017-11-02 18:21:20
478
原创 python2转化成python3脚本
脚本地址:C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Tools\scripts命令:python C:\Users\Administrator\AppData\Local\Programs\Python\Python36\Tools\scripts 2to3.py 待转换的py脚本目录 * -w 代表目录下的全部
2017-10-18 15:59:55
417
原创 使用pyinstaller将python脚本转换成exe可执行文件
第1步:下载安装pywin32cmd执行以下命令 下载安装pywin32pip install pywin32第2步:下载pyinstallergithub地址:https://github.com/pyinstaller/pyinstaller第3步:安装pyinstallercmd执行以下命令python setup.py install开始 安装pyi
2017-10-17 01:09:05
712
翻译 Catlike渲染教程之多个光照
渲染四 多个光照每个物体渲染多个光照支持不同的光照类型使用光照 cookies计算顶点光照引入球谐函数这是渲染系列教程的第五篇教程。前一章我们介绍了光照,只是一个单一的方向光。现在我们将支持多个光照。 一个平淡无奇的球体,在多个光照下变得生动有趣包含文件为了能为我们的shader 支持多个光照,我们需要在 shader 里面添加更多的通道 pass。这些通道 pass 最终会包
2017-10-07 15:52:48
336
翻译 Catlike渲染教程之第一个光照
渲染4 第一个光照从物体空间到世界空间的法线变换方向光的使用漫反射和高光反射的计算Enforce energy conservation使用金属工作流Unity的PBS算法的使用这是渲染系列教程的第四篇教程。前一篇教程是关于合并贴图。本次教程我们来看看如何计算光照。这个教程使用的是Unity 5.4.0,是当前最新的版本。 是时候照亮物体了法线我们可以看到物体,是因为我们的眼
2017-10-07 15:18:05
1041
原创 C#泛型方法的反射
核心的方法就是method.MakeGenericMethod(genericType)using System.Collections;using System.Reflection;using UnityEditor;using System;using UnityEngine;public class TestGenericRlection{ [MenuItem ("Asse
2017-09-26 23:09:16
1627
1
原创 Git:warning: ignoring broken ref refs/remotes/origin/HEAD
有时候Tab,想自动补全分支名,会出现这样的警告:warning: ignoring broken ref refs/remotes/origin/HEAD解决步骤找到.git目录下refs/remotes/origin目录(子模块的这个目录是在主模块的.git目录下,因为子模块没有.git目录)删除里面的HEAD文件或者所有文件然后运行git fetch –all
2017-09-25 15:10:21
7779
2
翻译 Catlike渲染教程之贴图混合
渲染三 贴图合并对多个纹理进行采样应用一张细节贴图在线性空间中处理颜色使用一张splat纹理这是关于渲染的教程系列的第三部分。 前面的部分介绍了着色器和纹理。 我们已经看到如何使用单个纹理来使平坦表面看起来更加复杂。 现在我们超越了它,同时使用多个纹理。 本教程是使用Unity 5.4.0进行的,目前该版本是开放测试版。 我使用build 5.4.0b15。 混合的多张贴图te
2017-09-18 14:44:47
2054
翻译 Catlike渲染教程之Shader基础
渲染二 Shader基础变换顶点给像素着色使用shader属性在顶点程序和片段程序间传递数据检查编译的着色器代码对贴图进行采样,并使用平铺和缩放这是渲染系列教程的第2篇。第1部分是关于矩阵。是时候写我们的第1个shader并引入一张贴图了。 这个教程使用的版本是Unity5.4.0。 贴上贴图的球体默认的场景当我们在Unity中创建一个新的场景,开始给你的是一个默认的相机
2017-09-13 14:43:27
1583
原创 Unity中的StrippingLevel
StrippingLevel的作用StrippingLevel是用来减少打包出来的player的体积如图。第一个是选择Strip Byte Code的包的大小,第一个是选择的Disabled的打出来的包的大小,明显的Strip Byte Code的包体积小于没有进行剥离的包,大概1M。 StrippingLevel选项的副作用使用Stripping Level需要注意的是,有可能会导致一些API执
2017-08-22 19:58:21
6499
原创 C#常用文件操作
c#拷贝整个文件夹到指定文件夹下(非递归) public static void CopyEntireDir(string sourcePath, string destPath) { //Now Create all of the directories foreach (string dirPath in Directory.GetDirectories(so
2017-08-22 11:15:35
3476
原创 Unity-jenkins持续集成--配置
GeneralGeneral中最重要的配置就是关于slave机器的配置slave机器的配置选项为:Restrict where this project can be run,勾选上,并且配置slave机器的名字 源码管理jenkins支持多种版本控制软件,SVN和GIT支持多个仓库git支持github、gitlab等远程仓库地址,而且支持分支构建构建是整个CI流程中最重要的,因为具体
2017-08-21 15:09:40
4835
原创 Unity下利用 timeScale和 unscaledDeltaTime实现部分静帧
话题铺垫看图说话 想必用 Unity 开发的朋友们都知道一个知识点,Time.timeScale 用于控制整个游戏运行时的时间缩放,使用它可以调整时间的流动速度,设置为0时间静默,设置为1时间按照我们真实世界的时间速度流逝。 问问往往没有这么简单,我们在实际的开发过程中会遇到各种需求。最容易想到的一个需求就是战斗中的譬如大招技能的静默问题,描述起来就是,对于特定目标时间正常流动,而对于其他物体时
2017-08-02 00:43:05
7929
3
原创 使用Resharper重构之Extract Class
阐述Create a new class and move the relevant fields and methods from the old class into the new class. 创建一个新类并从旧的类中移动相关的字段和函数,并放入新的类中思想单一职责:一个类明确只干某一类事杜绝内部类某一类脚本用文件夹归纳必须通过理论保证重构后运行效果完全一样如何做典型例子下面这
2017-06-28 17:07:19
1217
原创 Unity角色技能及技能编辑器设计之概念篇
概览首先给大家展示一下我们一个游戏中设计的技能及编辑器 构思我们很少能听到关于技能的一个定义或描述,那么,如果我们需要用程序思维来概括技能,我们应该怎么措辞才比较准确?当然,对于不同的游戏,技能的设计复杂度也大不一样,复杂的可以复杂到如Dota每个角色的主动被动技能,简单的可以简单到益智类游戏一个技能只是使用一下道具。如何庖丁解牛,我想最直接的想法就是找到技能的基本组成要素。然后基于这些要素,我们
2017-06-22 01:25:39
22888
6
原创 Unity 在mac好用的代码编辑器--riderRS
整体效果安装mono下载地址: https://download.mono-project.com/archive/5.0.1/macos-10-universal/MonoFramework-MDK-5.0.1.1.macos10.xamarin.universal.pkg安装riderRS下载地址:https://download.jetbrains.8686c.com/resharper/ri
2017-06-22 01:10:46
6976
原创 Ubuntu上搭建文件服务器samba
SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。更新源列表sudo apt-get update安装sambasudo apt-get update新建共享目录并设置权限创建共享目录 sudo mkdir /home/share设置共享的写权限sudo chmod 7
2017-05-24 00:30:57
1445
原创 C#中运行命令获取Git commit id的方法
游戏资源版本对比中需要一个版本号,如果采用git版本控制,可以利用commit id作为版本号。下面是如何在Unity3d工程c#获取git commit id。using System.Diagnostics;using UnityEditor;using Debug = UnityEngine.Debug;public class GitUtility { [MenuItem(
2017-05-18 16:14:34
3512
1
原创 Git: The following paths are ignored by one of your .gitignore files: xxx.dll
问题描述:The following paths are ignored by one of your .gitignore files: xxx.dll Use -f if you really want to add them.如:问题分析这句提示意思是说我们用git add某个文件的时候,这个文件的路径已经被写入了.gitignore文件当中了,自动被忽略,所以add不上去。 问题通常让
2017-05-12 14:12:42
22727
4
原创 Git命令总结
一、Git的版本控制思想二、常见的命令集锦1.分支模块切换分支:git checkout 分支名创建本地分支:git branch 本地分支名创建并切换至新分支:git checkout -b 分支名查看本地分支:git branch查看本地和远程分支:git branch -a查看本地和远程分支并显示 log 信息:git branch -va查看远程分支和相应提交信息:git br
2017-05-11 23:05:03
587
原创 Unity Cache Server的使用
官方文档地址官方关于cache server的手册地址下面是我对官方手册的一个粗暴翻译Unity拥有一个完整的自动资源流水线。当某个资源比如a.psd或者一个fbx文件被更改了,Unity监测到这个改变并自动的重新导入它。从这个文件导入的数据会被Unity后续以一个内部格式存储这种安排旨在使工作流程为个人用户尽可能高效灵活。 但是,在团队工作时,您可能会发现其他用户可能会继续对资产进行更改,所有这些
2017-05-11 18:45:40
6094
原创 Visual Studio For Unity后期生成事件命令
目标:自动生成dll到指定文件夹下我们使用VS开发自己的类库时,通常会生成dll相关的文件(还有mdb等),这些dll通常需要在另外的工程里面使用(比如Unity3d游戏引擎里面)。如果每次导出dll都通过手动拷贝到目标路径下,我们就会频繁的重复拷贝粘贴任务,繁琐,烦躁,且效率低下,使我们的开发体验特别糟糕。VS的后期生成命令可以帮助我们将生成的dll等自动的拷贝到目标路径。设置方法在每个类库上右键
2017-05-07 15:09:37
1298
原创 Renderer.Material和Renderer.SharedMaterial的区别
结论renderer.sharedMaterial意为共享材质,使用了相同材质球的 renderer中的sharedMaterial一致,更材质改属性,相同材质的实体的材质也会被更改;renderer.material是自己的材质,更改材质属性,也只是更改自身的;经过测试,使用 renderer.material进行材质球属性更改,Unity 会生成一份新的material实体,造成内存增加,
2017-05-07 01:26:53
5382
原创 Unity3d聊天视图适应手机键盘视图
我们实际开发出来的聊天系统,有时候会出现这样一个现象,点击InputField会弹出手机系统的键盘,键盘的弹出会遮住InputField甚至频道里面的消息。为了解决游戏聊天视图被这个系统键盘遮挡的问题,最直接的思路就是,输入框根据键盘的高度来做适应,意思就是说,根据键盘的高度,动态改变游戏聊天视图的高度。目前市面上比较有名的游戏,如手游《龙珠》是这么做的。我参与的项目同样遇到这样的需求,采用了同样的
2017-04-21 15:36:07
7832
6
原创 http阻塞模式和非阻塞模式
Http同步请求和异步请求区别同步会阻塞线程,一直等到网络回调,而异步不会阻塞同步可以设置TimeOut,异步则对TimeOut无视异步需要自己对TimeOut进行计算,通过监听接收到网络回调在Unity的表现一般做连接launch sever的时候用http请求同步方法(sync http)注意看按钮,在同步时,主线程阻塞,按钮是无任何反应的,不可点击,无hover响应的 异步方法(
2016-11-26 18:15:49
22521
3
原创 Unity实现脱屏提示
先看效果图再贴代码using System.Collections;using UnityEngine;using Joker.ResourceManager;using PalmPoineer.Mobile;using UnityEngine.UI;namespace Joker.Battle { public enum EOutScreenGuiderType {
2016-11-17 15:44:00
1535
原创 Unity实现弹幕功能
* 支持从左到右和从右到左的方向指定* 支持纵向的弹幕行数的动态扩展* 支持特殊的文本外框(如用于表示弹幕为玩家自己发送的)* 支持富文本* 支持在屏幕没有占满的情况下,两条弹幕不重叠,并满足指定的最小间距
2016-11-07 21:34:39
4753
10
原创 3D物体在UGUI下的坐标映射
3D物体在UGUI下的坐标映射这个标题着实不好取。举例,譬如怪物的血条总是跟随者怪物移动而移动,因而我们需要实时的更新这个血条的坐标。类似的,还有很多应用场景。归结起来就如标题所示–“3D物体在UGUI下的坐标映射”。其实并不男,只是实际工作中发现经常用到,故总结为一个工具函数,方便以后工作使用。 下面看我在 UGUI的Canvas下是如何实现的。关于坐标转换,肯定离不开相机,我们先来考虑相机。毫
2015-11-01 01:09:47
1772
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人