为什么unity不出现hont2015 tools for unity

Unity的GUILayout和css 一些个人想法 - HONT - 推酷
Unity的GUILayout和css 一些个人想法 - HONT
有一种感觉,GUILayout用的是css+html那种思路。但是用的是自己的那套&css&。
如果css真的好用,为什么wpf之类的不改成css的形式。
从界面的角度来看,软件和网页界面的区别就在于,网页长度宽度是不固定的,变化频率非常高,所以才有css这样,全部是相对位置,对于增加内容,非常方便,改动很小。
而软件界面不一样,基本不会变化,所以设计的时候方便直观比较重要,于是平面坐标拖控件成了方便的形式。
其实Unity也提供了好几种,GUI.Box之类的,都可以像拖控件那样,不过还不够,需要再次封装。否则别人wpf点几下按钮就能修改的东西,到OnGUI里面要找半天。
我之前一直用OnGUI,后来知道了NGUI之后,衡量一下之后就转用NGUI了,一直到现在。
回到GUILayout的话题上来,GUISkin好像就是它自己的&css&,不过感觉又不太像。不知道是不是css这个有版权它才不用,如果直接用css就更好了。话说UI多变的情况还真不常见,用武之地挺少的。
css是要牺牲一些易用性,来换来后期更新方便。
假如gui布局不是频繁变化,就用普通拖控件的模式就行,但一定要是点几下,拖几下就行的,OnGUI.Button那些还是算了吧。
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致信念就是不可动摇的意志
从以前一个文章转移过来的内容,以后会进一步进行测试
&毫秒数(Editor)
&毫秒数(Build PC)
加减内部变量
new List&int&()
str.IndexOf
GetComponent&Component&()
GetComponent&Transform&()
GetComponents&Component&()
                                                            &
阅读(...) 评论()Unity3D中Console控制台的扩展 - HONT - 推酷
Unity3D中Console控制台的扩展 - HONT
Assert Store上有一个Editor Console Pro,功能非常全面,百度也能搜到破解。如果有需要建议使用,不要再造车轮
起初因为自带Console功能太弱,有不少可以提升空间。于是尝试自己写,可是写到后面发现上面那个工具。。于是大致原理明白之后发上来分享一下好了。
=======================================
读到Log信息,有两个方法
1.Application.RegisterLogCallback
可惜是运行时用的,Editor下需要创建一个GameObject绑上运行时脚本,还有一个很严重的问题,就是会占用其他的回调注册,或者被占用而读不到Log。
2.调用内部类LogEntries
在看EditorConsolePro源码时发现它这么用,很奇怪这个类Unity官方没完全开放出来,在UnityEditorInternal.LogEtries下,只能通过反射调用。Unity官方论坛的资料也很少
-------------------------------------------------------
在尝试第一种方法无果之后,选用第二种方法。
ILSpy里稍微看了下
GetCount()可以直接得到Log的总数
bool GetEntryInternal(int,LogEntry) 可以得到详细的Title和stack信息。
int StartGettingEntries()和void EndGettingEntries()在取值的时候需要调用两个方法包围取值代码,否则会报指针错误。
SetConsoleFlag(int,bool)可以屏蔽Warning,Error之类的,和自带Console一样。
Clear()也是自带Console的Clear。
具体取值的代码如下
string GetSourceText(int row)
var LogEntriesType = typeof(EditorWindow).Assembly.GetType(&UnityEditorInternal.LogEntries&);
var startGettingEntriesMethod = LogEntriesType.GetMethod(&StartGettingEntries&, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
var endGettingEntriesMethod = LogEntriesType.GetMethod(&EndGettingEntries&, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
startGettingEntriesMethod.Invoke(null, new object[0]);
var GetEntryInternalMethod = LogEntriesType.GetMethod(&GetEntryInternal&, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
var logEntryType = typeof(EditorWindow).Assembly.GetType(&UnityEditorInternal.LogEntry&);
var logEntry = Activator.CreateInstance(logEntryType);
//Get detail debug info.
GetEntryInternalMethod.Invoke(null, new object[2] { row, logEntry });
//More info please search &UnityEditorInternal.LogEntry& class of ILSPY.
var fieldInfo = logEntryType.GetField(&condition&, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);
var result = fieldInfo.GetValue(logEntry).ToString();
endGettingEntriesMethod.Invoke(null, new object[0]);
int GetCount()
var debugType = typeof(EditorWindow).Assembly.GetType(&UnityEditorInternal.LogEntries&);
var methodInfo = debugType.GetMethod(&GetCount&, BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic);
return (int)methodInfo.Invoke(null, new object[0]);
调用GetEntryInternal取到的Log会返回LogEntry class结构,其中condition是栈跟踪信息。
然后遇到第二个问题,读到的Log信息始终都是最末输出的那个。
查了一下发现是用GetStatusTest()来读的Title,只能读到最后一行,似乎Unity内部输出Debug信息是在另一个线程里,才导致这个问题。
于是对每次得到的Count和上一次的Count值对比重新遍历,以输出所有的信息。
还需要加Count数的改变判断,不会像注册Log回调那样直接给你每条Log,只有改变了Count数才需要读入新Log.
这时候发现,OnGUI不能实时刷新。看了下文档解决了
EditorApplication.timeSinceStartup可以获得Unity打开到当前的时间。类似Time.time
在继承EditorWindow的类下加一个Update和定时器,不断给予重置Repaint()就可以解决。
点击具体Log跳转到IDE指定行数,这个当时绞尽脑汁也没想出来,devenv的dos指令也只能打开具体文件,估计有进程通信啥的。
后来在看另外一个插件时发现了这个方法,可以直接跳转到IDE。
InternalEditorUtility.OpenFileAtLineExternal(Path, Line);
如果知道具体怎么做到的欢迎交流。
这样的话,可以做到对Console过滤,加标签啥的,如果有想法集成个Log4net也可以。
具体就写到这里
已发表评论数()
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见
正文不准确
标题不准确
排版有问题
主题不准确
没有分页内容
图片无法显示
视频无法显示
与原文不一致Unity-Animator在Editor状态下的实时预览工具
时间: 22:36:36
&&&& 阅读:74
&&&& 评论:
&&&& 收藏:0
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&网上有一个版本,但是调了半天用不了。于是自己动手写了一个
下载地址:
标签:&&&&&&&&&&&&&&&&&&&&&&&&&&&原文:/hont/p/5119707.html
&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!信念就是不可动摇的意志
随笔分类 - Unity3D
摘要: 如果不是截屏或者在帧最后做一些关于图像的操作,基本上和yield return null是一样的。 事实上用yield return WaitForEndOfFrame,打印出的帧数也是改变的 总而言之,如果不是截屏相关操作,就没必要用WaitForEndOfFrame。 测试1: 从测试顺序来看,
HONT 阅读(5) |
摘要: 参考文章:/SkyD/archive//1284778.html 主要依据胡克公式F=-k·x。这里k是倔度系数,可以理解为k值越大弹性越强。 实际运用不能照搬胡克公式,可以作为速率使用,具体看参考文章。 k值较低的效果: k值较高的效
HONT 阅读(23) |
摘要: 朋友那边最近有个需求,需要框选一个选区,然后根据选区中的点求出面积。并且让我尝试用Delaunay来解决 似乎音译过来应该是德诺类 大致如下: 我在github上找了一个可以用的Delaunay库 /miketucker/3795318 但是需要注意这个
HONT 阅读(6) |
摘要: 1.基本参数与使用 1.1 常规介绍 使用预计算光照需要在Window/Lighting面板下找到预计算光照选项,保持勾选预计算光照并保证场景中有一个光照静态的物体 此时在编辑器内构建后,预计算光照开始生效。 相关的文章有很多,unity官方有一系列文章不错:
HONT 阅读(161) |
摘要: unity官方的教程:/cn//extending-unity-5-rendering-pipeline-command-buffers/ 文章底部附带了一个demo工程 用官方例子改了改,作为测试脚本 using UnityEn
HONT 阅读(59) |
摘要: 最近要对前几帧数据进行平均数采样。所以又造了一个轮子 此方法经过一些单数和双数的基本测试,并且解决了无效四元数的问题,基本可用:
HONT 阅读(20) |
摘要: 1.简述 这篇文章是对Adam各种相关资料了解后进行一些精简的内容。如果你想仔细研究某个技术请跳转至unity相关页面。 Adam官方页面:/cn/pages/adam 搬运视频以及资源包网盘下载:/s/1c2f1Zw8
HONT 阅读(376) |
摘要: 从以前一个文章转移过来的内容,以后会进一步进行测试
HONT 阅读(35) |
摘要: 1.Unity中,四元数不能保存超过360度的旋转,所以如此大范围的旋转不能直接两个四元数做插值(当你用0度和721度的四元数做插值,它只会转1度,而不会转两圈)。 2.要把旋转设置成某个方向,用LookRotation,不要用FromToRotation。前者结果测试过,是绝对准确的。 3.四元数
HONT 阅读(10) |
摘要: 最近在优化摄像机部分代码,抽了个时间对物理投射这块进行了系统性的测试,发现了不少东西 测试工程下载地址: /files/hont/RaycastTestProj.rar 测试方式: 在某半径内随机若干Cube,然后以中心点发射各种投射进行测试 使用Un
HONT 阅读(134) |
摘要: 在Unity中进行速度和GC Alloc的测试 测试脚本: 100万次循环下,可空类型执行速度45ms,非可空类型执行速度12ms 并且没有GC。
HONT 阅读(19) |
摘要: 要注意如果是XY坐标轴的2D空间,要取差乘分量z而不是y。 实现原理是,将三角形ABC三个边(AB,BC,CA)分别与比较点判断差乘,如果这3个差乘结果表示的方向一致,说明就在三角形内。 效果: 代码(Unity3D): 为了加误差,所以多做了3次差乘。不过使用起来还算可以
HONT 阅读(22) |
摘要: 之前一篇文章里写了一种差乘判断方法:/hont/p/6105997.html 虽然用3D空间的差乘,但是只适用于2D空间 我后来找到了另一个封装好的函数,不仅可以判断相交而且能查到是否相交于虚交点,是否平行等等。 原版是java写的,但出处不详 以下是我修
HONT 阅读(14) |
摘要: 参考自这篇博文:/dabiaoge/p/4491540.html 一开始没仔细看做法,浪费了不少时间。下面是最终实现的效果: 大致流程: 1.随便选取多边形上任意一条边,以比较点和边的中心点做一条射线(这里用的伪射线)。 2.用这条射线与其他所有边判断是否
HONT 阅读(58) |
摘要: 做为Unity早期的经典demo,一直从3.5以后沿用到4.7.x版本。但其内部一些做法十分不合理。比如使用过多的根目录, 创建怪物和玩家不用SpawnPoint。AI、CheckPoint的代码实现过于随意,代码命名风格诡异等等。。 网上有很多相关的学习文章,所以我精简了一下,将一些有用的部分学习
HONT 阅读(233) |
摘要: 最近在看之前的愤怒机器人demo,它的反射通过一个反射相机实现 我尝试在unity5里用反射探头做出镜面反射,但想要调的准确倒是比较难。。 。。 后来朋友发我一份反射探头实现镜面反射的文章,解决了这个问题 地址:http://nn-/entry/2016/
HONT 阅读(378) |
摘要: 测试方式: 每个对象做大范围正弦移动,创建个对象,保证场景分割树的实时更新,并测试帧率 测试脚本: 移动脚本: using UnityE using System.C public class Test1 : MonoBehaviour { pub
HONT 阅读(30) |
摘要: 由于Unity只有4x4矩阵,今天要做一个2x2矩阵的旋转,居然忘了顺序。故写下作为模版记录。 顺序: 下面是使用其进行旋转的C#代码:
HONT 阅读(19) |
摘要: 本文刚体有关的内容不再赘述,主要测试碰撞器和触发器的消息关系。 刚体在这篇有测试:U3D刚体测试1-刚体非刚体物体非Kinematic等之间的碰撞关系 碰撞器测试结果: 1.A对象为Collider,B对象为Trigger。A对象绑定接收脚本。则只触发Trigger相关消息。 2.A对象为Colli
HONT 阅读(28) |
摘要: unity下测试脚本: 顺便贴出unity的实现: 100万次循环测试。点乘57ms,差乘71ms。看了unity的实现后更是理所当然了 所以在点乘和差乘都可以用的情况下,应当优先考虑点乘。
HONT 阅读(23) |
摘要: 在unity中四元数和向量相乘可以变换旋转。四元数之间相乘类似矩阵之间相乘的效果。 矩阵相乘的顺序不可互换,只有特殊条件矩阵才可互换。四元数相乘类似,今天就因为这个问题掉进坑里了,记录一下 问题大致是,有一个cube,它会看向左边的板,用角轴旋转,但我想要y轴看向它 以下代码就是没有注意相乘顺序导致
HONT 阅读(92) |
摘要: 使用自定义特性关键字,可以动态对Shader某一部分代码进行开关操作 shader(定义了KEYWORD1特性): 定义:#pragma shader_feature KEYWORD1 判断:#ifdef KEYWORD1 脚本: 测试效果如下:
HONT 阅读(37) |
摘要: 1.在动画播放中改变层级内容的名字,不会造成动画内容映射的改变。 2.Animator动画剪辑层级没问题,但是不播放 检查是否Mask损坏,FBX文件的Animations选项下面有个Mask。Unity会提示Mask是否修复
HONT 阅读(23) |
摘要: 按位取反运算符是按照二进制的每一位取反,比如byte类型,~0的结果就是255。 该功能可以在mask中做一些反转操作 如下代码,a存放了2,4,8三个值。用按位取反'~'运算符反转 打印结果是 false,flase,false,true,true。Mask已经被反转 比如在unity引擎中,该操
HONT 阅读(780) |
摘要: 测试4为一些附加内容,后续的各种tips都加在此。 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 /hont/p/4298110.html Unity脚本在层级面板中的执行顺序测试2 /hont
HONT 阅读(28) |
摘要: 1.投射目标是否需要附加刚体,是否可忽略触发器? 默认既支持触发器,也支持刚体。投射的最后一个参数queryTriggerInteraction可以设置,是否包含触发器事件。 2.非射线投射,是否有接触点信息? 投射物刚好相交则会返回接触点信息(hits.point)法线信息等,如果是包含则没有,返
HONT 阅读(36) |
摘要: 问题如下,因为再激活Animator时,它会重置一次,参数也会丢失 这个问题一直存在,论坛给出的解释是把参数缓存下来,在激活时重置 /questions/919995/parameters-and-states-of-animator-reset-
HONT 阅读(64) |
摘要: 游戏中经常遇到在移动物上战斗的情况,而直接拖拽的话就会下落了 默认情况: 比较简单的办法是直接设置父物体 但刨根问底想一下,在Unity里拖拽,使用transform移动,其实都不是基于物理的移动 只有改变速率才是,后来用恒力去测了一下,果然可以带动站在上面的物体 所以,我尝试了一下更简单的方式:
HONT 阅读(37) |
摘要: 1.编辑器相机同步 The Courtyard的demo中,会发现Scene视图和Game视图是编辑器下同步的,它通过一个CopySceneView.cs脚本实现 Scene视图和Game视图的显示效果还是有区别的,毕竟有相机滤镜。同步后可以更好的调试 2.光球的自发光 Demo中光球的自发光,是通
HONT 阅读(76) |
摘要: 回到 Animator深入系列总目录 CrossFade是按照动画的自身时间进行混合。如果动画10秒,混合持续时间0.2,会在2秒后混合完成 CrossFadeInFixedTime是按照实际时间进行混合。如果动画10秒,混合持续时间0.2,会在0.2秒后混合完成 使用CrossFade或Cross
HONT 阅读(372) |
摘要: 在四元数插值时,准确比较插值是否完成或者即将完成,可以使用四元数点乘的接口 最后点乘结果会不断接近-1或1。具体根据转向而定 脚本:
HONT 阅读(28) |
摘要: 主要针对拿来主义,并对一些使用范围广的shader进行研究。虽然是4,5年前的demo,但还是有学习价值的 1.GodRays MADFINGER/Transparent/GodRays 传统的上帝之光效果,有顶点变形,适用范围非常广。 另外维京村落demo中,还有一个粒子用的近处消隐效果:http
HONT 阅读(186) |
摘要: 测试常用的层级内组件查找接口,但一些需求还是需要扩展 比如按照名称批量查找节点,查找接口对象等 1.Transform - Transform Find(string name) 可以直接根据名称搜索到子层级节点和孙节点等,支持非激活的节点,但不能返回数组 不支持搜索自身 2.Transform -
HONT 阅读(407) |
摘要: 对Unity各种API的细节进行测试 Common 一些Unity基础操作的性能测试 Animation/Animator Animation Play/Stop测试 关于Animation动画事件的几项测试 关于AnimationState的测试 Animator的“当前剪辑CurrentAnim
HONT 阅读(35) |
摘要: Custom/DistanceFade shader 粒子雾似乎可以使用。尝试给面片套用该效果,但由于有顶点变形,效果不太好,要做些改动
HONT 阅读(56) |
摘要: U3D UGUI学习1 - 层级环境 U3D UGUI学习2 - Canvas U3D UGUI学习3 - RectTransform U3D UGUI学习4 - Text U3D UGUI学习5 - Layout和文字适配
HONT 阅读(47) |
摘要: 效果如下: 似乎是通过高光贴图实现的,查找后发现具体在这: 它使用了基于Standard的TerrainSurface自定义Shader,关闭该帖图后效果消失: 这个TerrainSurfaceShader放置在项目中,可以直接拿来使用
HONT 阅读(66) |
摘要: 标记了Conditional特性的函数,相当于#if ....预编译指令 比如上述代码可以达到只在编辑器下可用的效果 为了测试编译,打包了一下。结果编辑器下有创建Cube,打包后的exe没有。也没有函数丢失报错 但使用要求比较苛刻,函数本身不能有返回值,且不能是重写方法等。
HONT 阅读(39) |
摘要: 1.Unity官网的Blacksmith主页 /pages/the-blacksmith 2.WRINKLE MAPS IN THE BLACKSMITH 褶皱贴图 //wrinkle-maps
HONT 阅读(49) |
摘要: 1.Plane Reflection 平面反射 在角色包的例子里可以看到,该脚本使用一个特定的相机渲染反射内容 官方介绍说这是优于反射探头的一种做法 2.HairRenderer 毛发渲染器 单独写的毛发渲染器对AO,层级顺序等进行了优化,下图演示了传统毛发和渲染器毛发的区别(注意阴影锯齿): 还可
HONT 阅读(129) |
摘要: 现在可以直接在Unity下载页面获得 /get-unity/download/archive 包括StandardShader,StandardShaderGUI.cs等
HONT 阅读(256) |
摘要: 1.使用标准材质,设置好Emission外发光 2.Camera下打开HDR,加上Bloom特效 最终效果 如果只勾选HDR,只会有高光感,不会有外发光 注意,正向光照下打开HDR不可用抗锯齿,否则切为延迟光照
HONT 阅读(236) |
摘要: 起初想用SortedDictionary做游戏中的排行榜,代码如下: 结果就是unity死循环 当你get字典中的数值时,它会调用比较器。比较器里又调用了字典,造成死循环 而且这种用法还有一个问题,可排序字典是对key进行排序,操作时内部有类似二分查找的机制。 在做排行榜时又要按名称匹配,又要自动按
HONT 阅读(93) |
摘要: 某一组行为放在并行节点下,并且包含Wait节点动作。当等待时间不达到时它会返回Runing 造成整个行为树阻塞 应该考虑写一个CD时间装饰器来解决此类问题,当CD时间未到返回Failure
HONT 阅读(35) |
摘要: 回到 Animator深入系列总目录 最近在做一个demo,遇到了角色跑动不自然的问题(注意双腿): 后来得知勾选FootIK之后Unity会智能修复这类问题: 好像这个功能还能做到斜面地形匹配,不过试了下效果不是很好:
HONT 阅读(161) |
摘要: 编写插件时,Unity没有提供当前被放置目录的功能。比如资源商店的一些插件需要放在Assets根目录下。 但通过脚本可以反求出所在目录,对于自己写的插件,就避免了类似问题:
HONT 阅读(26) |
摘要: 最近在用Behavior Designer,其中需要用到消息机制,看了一下其中自带了这套东西 注册 反注册 发送消息 外部发送 需要注意,不能跨行为树发布消息。但可以取到对象上的行为树组件,然后发送
HONT 阅读(26) |
摘要: UITexture实现的溶解: 重设UITeture的材质球实现上述效果,把当前屏幕渲染的Texture2D丢给UITexture,即可实现UI屏幕特效,背景模糊等都可以。 难点主要是实时刷新问题 解决的比较粗暴,每次Update重设材质球,强制NGUI更新: 第二个是灰显: 实现灰显后,美术就不用
HONT 阅读(55) |
摘要: 原文链接 http://forum./thread-.html#rd 基于上面的脚本修改了一下,增加了饱和度计算,达到图片上的效果 饱和度
HONT 阅读(32) |
摘要: 受光物和发光物都要勾选Static才会有效。 如果不够选静态就是用HDR光照,需要相机勾选HDR 所以如果是动态的物体真实发光,Unity依旧无法支持
HONT 阅读(96) |
摘要: 用GetWindow创建窗口时,第二个参数填true。创建为独立的工具窗口,即可恢复边框
HONT 阅读(34) |
摘要: 网上有很多,但大多使用Camera.RenderToCubemap接口,不能满足需求。 写了段代码可以载入Texture2D生成Cubemap(在Editor下运行): 生成结果:
HONT 阅读(83) |
摘要: 该脚本会创建一个新相机进行录制,支持包含所有相机内容,完美解决跳帧问题,可自定义分辨率等参数,脚本会输出品质为100的jpg序列,基本无损。 但缺点是帧率始终是每秒100帧,必须压制时限制帧数。 而用Application.CaptureScreenshot虽然可以录制包括多相机,OnGUI在内全部
HONT 阅读(457) |
摘要: 用Handles可以直接在GUI下绘制贝塞尔 using UnityE using UnityE using System.C public class GUIBezier : EditorWindow { Vector3 mO Vector3 m
HONT 阅读(56) |
摘要: 感谢韩同学提供的资源 Unity本身提供了float,int,vector3..等类型字段的gui接口,而对于集合类型一般要自己硬写。 官方提供了一个List的自定义GUI,但使用起来非常复杂 UnityEditorInternal.ReorderableList使用: b
HONT 阅读(115) |
摘要: 原文地址:http://va.lent.in/unity-make-your-lists-functional-with-reorderablelist/ This article is reproduced, the original address: http://va.lent.in/unit
HONT 阅读(53) |
摘要: ScriptableObject主要实现对象序列化的保存,因为是Unity自己的序列化,所以比xml,json序列化方便很多,但相对可控性也比较差 1.Editor下写入和读取测试: using UnityE using UnityE using System.Collect
HONT 阅读(75) |
摘要: Unity早期有对.c4d文件进行支持,但缩放问题,不支持顶点色,以及目标机器必须安装C4D等都极为蛋疼,这是这款工具开发的初衷之一。C2U工具解决了传统FBX导出的诸多问题,以及脚本链接,Shader链接,轻量级的顶点动画等等。 1.概述 项目放置于oscchina,地址: http://git.
HONT 阅读(532) |
摘要: 测试版本unity5.3.4 1.当帧率不足时,Animation会跳帧,假如跳帧超过动画事件的帧,动画事件也会执行。 2.当Animation混合时,混合中的动画不管哪个当前有动画事件,都会执行。 3.当A动画CrossFade到B动画,而动画事件刚好在B动画的最后一帧,动画事件无法执行(bug)
HONT 阅读(57) |
摘要: 最近遇到一个问题,剧情动画文件大了复杂了之后,每次修改输出很麻烦,导出fbx就需要20分钟。 所以我想到了一个比较好的解决方法,在unity这边解决。把动画文件拆分成若干份,然后赋予不同的层并行播放 当要修改某个角色或者某几个角色的动画只要输出一小部分就可以了 为了测试可行性,我使用了一个跑动的模型
HONT 阅读(38) |
摘要: 实测过确实可行,注意如果没有刚体组件,实现方式会不一样 public class TestSMB : StateMachineBehaviour { public override void OnStateMove(Animator animator, AnimatorStateInfo state
HONT 阅读(128) |
摘要: 可选是否打开矩阵变换,支持xyz三种朝向 using UnityE using System.C using System.Collections.G public class CapsuleDetection : MonoBehaviour { pu
HONT 阅读(53) |
摘要: 测试结果: 1.当切换不同动画播放,可以直接调用Play或者CrossFade。会立即切过去 2.当相同动画再次播放,又想打断重头再播,需要先调用Stop。
HONT 阅读(37) |
摘要: 直接替换SkinnedMeshRender的Mesh,实现所谓断肢效果(不过最近发现,绑定多mesh似乎更好实现这样的效果。有时间准备写一篇): 只要不改变两个Mesh原始文件的层级,就不会出现权重的错乱问题。 权重映射的测试:/hont/p/525253
HONT 阅读(78) |
摘要: 以下内容仅为猜想,只进行了初步验证 FBX骨骼中包含所绑定的顶点索引,导入Unity后,Unity会把层级树保存起来,然后实例化的时候映射过去 编辑器下权重信息本身不在fbx文件的meta里,不可修改。运行时中权重信息作为BoneWeight类型存放在Mesh的数据结构中。 实现修改权重只要fbx文
HONT 阅读(96) |
摘要: 斜面上的互推测试 测试方法为给胶囊加一个恒定的力,然后推动另一个胶囊 方向一致的情况: 推动的话,设置对力的方向就不会有问题。就好像AddForce,给一个Y轴的力肯定会飞 斜面移动测试 沿着地面法线移动即可,否则会像图1一样下滑很奇怪 移动,未重置方向,注意下滑: 移动,重置方向: 斜面摩擦力测试
HONT 阅读(57) |
摘要: 战神斯巴达之魂的雨渍做的很逼真,尝试了下,似乎是差不多了,整体欠缺不少 普通平面: 环形流动: 河流: shader实现,3层加上一个偏移层 圆形的雨渍流动和河流要重新展一下UV
HONT 阅读(87) |
摘要: 需要指定开始时间参数,否则Animator会默认当前已经在播放这个动画而忽略掉 CrossFade一样 gif: public class AnimatorDebug : MonoBehaviour { public A void OnGUI() { if (GUI
HONT 阅读(97) |
摘要: 设备联想A7600m,好像是联发科的cpu 先用网上流传很广的这个Unity自带接口试验一下: Handheld.bine(Application.streamingAssetsPath, path), Mobile_BackgroundCol
HONT 阅读(73) |
摘要: 目前基本实现了导入,注意只能打开含有单个模型的obj文件 四边面模型: 全三角面模型(测试单一材质,自动分了下UV): 这里介绍下obj格式: obj格式是waveFront推出的一种3D模型格式,可以存放静态模型以及一些诸如曲线的附加信息。 其格式以文本形式存放,所以解析起来比较方便,它的大体格式
HONT 阅读(812) |
摘要: 实现: 实现方法很简单,判断当前运动是上升还是下降,如果是上升就隐藏掉某个Collider 注意隐藏最好是重复开关Trigger,否则会触发Unity的一个bug,具体看这篇/hont/p/5220005.html 但这么做会有个问题,不能有角色之间的真实
HONT 阅读(55) |
摘要: 补充 - 也可以用Physics.IgnoreCollision(collider1, collider2, ignore)忽略碰撞接口来实现,但只能针对单个物体。 实现后: 使用层碰撞矩阵可以达到这个效果: 层配置: 给角色全部设置为Character层,当角色需要进入无视体积
HONT 阅读(46) |
摘要: 当我把FixedUpdate更新频率设置为1秒一次,测试结果如下: 结论: 1.由物理更新驱动 2.不会产生穿透
HONT 阅读(29) |
摘要: 最近遇到一个相机旋转约束问题 本来想直接比较旋转值解决,但是旋转的值是0-360的区间,比如当前角度是1,范围是350-10,就会出错。需要做环形范围的判断 当然也可以转换成向量来比较,但那样计算太昂贵了 也就是说需要写一个环形区间的clamp,类似下面这张图 数学不好,直接硬写: public s
HONT 阅读(34) |
摘要: Tips: 1.以下情况,一定是其中一个有Rigidbody的情况。 2.切记不要在多帧内连续开关Trigger,很多奇怪的问题都是这样造成的。 当两个Collider重叠时,他们会互相排斥出去: 如果外面大的Cube相对小的Cube质量很高,会弹出且不出现移动(已锁住弹出物旋转,如果不锁会飞出去)
HONT 阅读(39) |
摘要: 测试脚本 unity5.2和5.3都有这个问题: 而Unity4.7没问题 如果是粘滞问题,可以重复开关一次IsTrigger解决: /hont/p/4928497.html 如果是要在开关后取标量,比较麻烦。另外要尽量避免这种重复开关的危险行为。
HONT 阅读(100) |
摘要: Rigidbody.position/rotation主要提供在下一个物理步之前更新物理位置,一般用于SweepTest这样的接口 那么测试一下会不会修改掉transform.position的值 测试结果:并不会立即改变transform.position,而会在下一个物理步执行时改变。如果手动改
HONT 阅读(47) |
摘要: 和Physics的投射差不多,SweepTest可以直接投射当前碰撞 但是比较遗憾的是它对MeshCollider的支持不是很好,需要勾选Convex 投射和Physics一样,只要加了碰撞器,不管勾没勾选Trigger都会被投射到 另外如果想移动刚体位置进行SweepTest的话,可以调用.pos
HONT 阅读(40) |
摘要: 在移动时使用最终方向,而不是插值方向,即可解决这个问题 当我快速连续的按上下键,角色却出现向左或者向右移动 具体表现在左图,右图是修复后的:
HONT 阅读(36) |
摘要: 去年1月份的时候稍微研究了下: /hont/p/4264518.html 当时觉得是参数没设置对,然后这个问题就无解不了了之了。今天又拿出来看了一下,找到了解决办法 当然如果碰撞框足够厚,那就另当别论了。 测试环境很简单,一面墙,红色方块不停向前 然后,由
HONT 阅读(87) |
摘要: 事情是这样的,我尝试在一帧内多次切换一些状态: 但结果并非播放Idle,而是播放BeAttack1。 在Animator刷新前,它所播放的是最后一次调用接口的信息,谁排在后执行谁。 并且当一个状态处于过渡时,Animator默认这个状态还没有跳转,只有过渡完成才算跳转到另一个状态(具体看这篇:htt
HONT 阅读(621) |
摘要: 回到 Animator深入系列总目录 Unity5对状态哈希做了改进,拆分成了fullPathHash和shortNameHash,那么就来看看他们有什么区别 测试结果: fullPathHash支持嵌套子状态以及层,shortNameHash直接不支持路径 这是使用的测试状态机,一共三种状态 测试
HONT 阅读(257) |
摘要: 测试代码: void Start() { Debug.Log(&Before Position(Start): & + transform.position + & frame: & + Time.frameCount); GetComponent&Rigidbody&().AddForce(new
HONT 阅读(55) |
摘要: 1.Linear 2.BackIn 3.BackInOut 4.BackOut 5.BounceIn 6.BounceInOut 7.BounceOut 8.CircIn 9.CircInOut 10.CircOut 11.CubicIn 12.CubicInOut 13.CubicOut 14.E
HONT 阅读(39) |
摘要: 在根运动打开时,施加AddForce,速率在后面几帧被清0了: 没有打开根运动AddForce的情况: unity论坛看了下,似乎有人遇到这个问题,而且无解。只能受力状态下关闭根运动 Q:Im working on a new title right now and I wanted to try
HONT 阅读(56) |
摘要: Lerp更像是线性衰减,而SmoothDamp像是弧形衰减,两者都是由快而慢 其中SmoothDamp多用于相机跟随。但如果其他类型的插值,我个人觉的其实都差不多 SmoothDamp: Lerp:
HONT 阅读(141) |
摘要: 可见是Collider的Bounds
HONT 阅读(37) |
摘要: 回到 Animator深入系列总目录 结果和想的有点出入 测试结果: 1.SMB初始化会被调用多次,次数不可控,当Animator组件重复开关则重复初始化。 2.SMB支持构造函数 MyClass public class MyClass { public MyClass() { Debug.Log
HONT 阅读(224) |
摘要: 程序这边的接口: mRigidbody.constraints = RigidbodyConstraints.FreezePositionX | RigidbodyConstraints.FreezePositionY; 经过测试,冻结轴向是世界轴向
HONT 阅读(50) |
摘要: 最近把1年前的跑酷游戏demo拿出来重做了一遍,解决了2个之前的遗留bug。 虽然罪魁祸首都是FixedUpdate,但细节又不太一样。这里记录一下 1.点击空格键,角色会跳跃。而有时会跳的比之前高很多(使用Rigidbody.AddForce) 解决: AddForce之前应该清一下速率,因为是射
HONT 阅读(220) |
摘要: 出处:/questions/578393/clear-console-through-code-in-development-build.html Debug.ClearDeveloperConsole()也可以用,但稍微麻烦点。
HONT 阅读(85) |
摘要: 断断续续的写了3篇,以后有时间可以做成一个系列了 前面2篇测试了GameObject的顺序,以及Awake和OnEnable的时机: Unity脚本在层级面板中的执行顺序测试1 /hont/p/4298110.html Unity脚本在层级面板中的执行顺序
HONT 阅读(55) |
摘要: 网上有一个版本,但是调了半天用不了。于是自己动手写了一个 单个预览 批量预览 使用: 下载地址: /files/hont/AnimatorClipPreviewer1.1.rar
HONT 阅读(153) |
摘要: 回到 Animator深入系列总目录 测试Unity版本为5.2.1 人形动画的接口都有标注 本列表不包含所有标注为过时的方法 目前该详解还有不少缺漏,有时间持续更新 更新CrossFadeInFixedTime接口描述 1.Vector3 angularVelocity { ge
HONT 阅读(2431) |
摘要: 回到 Animator深入系列总目录 本篇不讲解所有的面板功能,只是针对一些非常用功能进行介绍。 1.状态 1.1状态简介 简单的不做介绍了,需要特别注意: 1.Paramter勾选后可以指定参数控制具体属性 2.Write Defaults勾选后用默认动画剪辑属性覆盖到状态上 3.Foot IK
HONT 阅读(1414) |
摘要: 回到 Animator深入系列总目录 Q: 如果想做角色负伤的一套动画,但是又和原有状态机不冲突,只是想换动画剪辑,应该怎么办? A: 新建一个层,设置为同步模式。这时候你不能在同步层添加状态,但你可以替换动画剪辑。 官方的解释是: Sometimes it is useful to be able
HONT 阅读(245) |
摘要: 花了不少时间完成了这篇Unity Animator学习系列文章,其中大多数内容都来自个人实践,包括API部分很多都是亲测,期望和网上的诸多教程达到互补。 相关参考文档 Unity Animator官方组件文档 Unity Animator官方脚本文档 圣典的部分汉化文档 Unity官方的Animat
HONT 阅读(705) |
摘要: 回到 Animator深入系列总目录 要让代码控制IK,需要先在Animator中打开IK pass 然后,和IK相关的代码需要放到相应的函数中去: 而如果是StateMachineBehaviour,IK操控的代码是在: 测试脚本: using UnityE using System.
HONT 阅读(420) |
摘要: 回到Animator深入系列总目录animator.SetTarget(...);可以在播放前预判剪辑播放后的位置,但只限于人形动画参数1是预判的关节,参数2是映射的剪辑时间调用后通过targetPosition,targetRotation来获得坐标和旋转测试代码:void Update(){ ...
HONT 阅读(285) |
摘要: 回到Animator深入系列总目录一开始会理所当然的觉得,匹配是这样的:但结果却是这样的(右边的Cube是匹配目标):感觉这个接口应该是专门为攀爬之类的动画准备的,属于被动匹配位置,移动整个对象去匹配所以像游戏中的斜面双脚的IK匹配,就和这个接口没关系了:OK,下面附上测试代码:using Unit...
HONT 阅读(300) |
摘要: 回到Animator深入系列总目录Animator自带了简单的动画录制,回放功能。但可惜的是不支持持久化的数据输出。因而不能作为录像保存不过这种可以作为竞速,格斗类游戏在结束时经常出现的游戏回放,还是比较有用的测试所用脚本using UnityEpublic class Animator...
HONT 阅读(635) |
摘要: 无意中翻到这篇问答LINK,发现了Sample的用法 如果想让Animation在编辑器状态下预览,也可以用这个接口 当你想要直接获得动画的运行结果,而不是等帧数执行到这,这时候就得调用Sample:
HONT 阅读(91) |
摘要: 回到 Animator深入系列总目录 首先这个脚本必须继承自StateMachineBehaviour 然后切到Animator面板,选择状态机里的任意状态,点击Add Behaviour即可挂载 这时运行游戏,当状态机运行至Jump状态时,程序打出Log 注意 1.状态机脚本可以挂载到Layer上
HONT 阅读(599) |
摘要: 回到 Animator深入系列总目录 官方文档给出的信息非常含糊 测试了一下,首先必须是含有根运动的动画,才会得到DeltaPosition/DeltaRotation的值,这个值是相对于上一帧的根运动位置 并且非人形动画也可以获得该值 对于修改根骨骼位移RootMotion,会用到这两个参数,可以
HONT 阅读(336) |
摘要: 回到Animator深入系列总目录Animator的SetFloat接口可以设置阻尼,并且4种类型变量只有float是支持阻尼的。public void SetFloat(int id, float value, float dampTime, float deltaTime);当设置阻尼为0.2时...
HONT 阅读(180) |
摘要: 最初文档里是这么说的Note that if you use fragment programs, Fog settings of the shader will still be applied. On platforms where there is no fixed function Fog ...
HONT 阅读(313) |
摘要: 测试代码: 结果: 可见在Update之后,LateUpdate之前
HONT 阅读(44) |
摘要: 上一篇测试了生成顺序对执行顺序的影响,链接:LINK 执行顺序测试3: LINK 这篇主要测试一下Awake,OnEnable,Start三个常用消息的循环顺序 1.测试消息循环顺序 先上一个最简单的打印测试 测试结果为Awake和OnEnable在第一次循环中,Start在第二次循环中 关于调用时
HONT 阅读(102) |
摘要: 游戏里的剧情动画大体分为两种,播即时演算好的视频和纯即时演算 巫师2,3就属于全实时演算,所以会发现很恶心的lod延时切换和建筑物生硬出现等。 而近年的游戏都属于比较常见的两者混合做法,但凡场景跨度较大,运动内容极多时以播放视频形式来呈现。一些简单对话或者运动内容较少使用即时演算 直接播放视频是在引
HONT 阅读(150) |
摘要: 经过测试,DebuggerHidden只对输出的日志有影响。对编辑器的控制台输入没有影响你可以通过这个特性避免日志log有一堆的堆栈信息并且测试过发现Debug.LogError也不支持该特性,和Debug.Log一样没有堆栈跟踪只有抛出异常才会有堆栈跟踪log输出:Exception: !!! ...
HONT 阅读(108) |
摘要: 其实和想象的结果还是有点出入 斜坡测试 (非悬空,直接把地面旋转成斜坡) 在非悬空状态下是不会受到斜坡的影响,只有进入悬空再进入斜坡,才会滑下去 一帧内关闭碰撞器再打开,或者一帧内打开Trigger再关闭也可以。 (悬空自由落体后,滑下斜坡) 重力方向改变测试 那么如果游戏中角色有跳跃,又不想顺着地
HONT 阅读(92) |
摘要: 非继承自MonoBehaviour的类,里面包含Animation,Transform成员,成员以属性形式存在。然后序列化报错目前没有比较好的解决方法,可以换成函数不太理解自带的xml序列化为什么没有过滤属性。那么这类问题基本上都是这样造成的
HONT 阅读(35) |
摘要: 先来一段.NET4.5原生的异步 class Program { static void Main(string[] args) { ExecuteAsync(); Console.WriteLine(&start&); Console.Read(); } static async void Exe
HONT 阅读(360) |
摘要: 我最初想直接修改.anim文件但通过后来得到的信息,其实根运动状态储存在FBX.meta文件里,转出的.anim文件虽然也有根运动的信息但是算是塌陷过的,无法进行开关操作。这是我针对有根运动.anim文件和无根运动的.anim对比图:后来根据论坛查到的信息,具体参数在meta下的这条属性中:huma...
HONT 阅读(177) |
摘要: 正常调用Type.GetType取不到组件,因为会先创建实例在获取,而Unity组件无法通过new来创建。 第二种创建方式是通过程序集,具体如下 但是Unity分为两种程序集,运行时和编辑器时,这两种程序集的名字分别是: Assembly-CSharp Assembly-CSharp-Editor
HONT 阅读(171) |
摘要: .net C#下测试:public class Class1{ public bool toggle1 = public bool toggle2;}一个结构类Class1,对里面两个成员通过初始化器执行初始化。在原生C#里测试,结果是正常的unity的mono下测试:在un...
HONT 阅读(24) |
摘要: 通常下意识的肯定用这个接口GetCurrentAnimatorStateInfo(0).length但是存在一个过渡动画的问题,具体看这篇:过渡动画的测试 所以当播新的状态时直接取动画时间,取到的就不是当前剪辑的时间。也可以加一个判断,使用这个接口判断是不是过渡boolIsInTransition(...
HONT 阅读(83) |
摘要: 2016/2补充: 不仅存在调用多次的情况,还存在FixedUpdate漏帧调用的情况: Update的每秒调用次数是随着帧率改变,由系统控制。那么猜想可能出现一帧内重复调用的情况。 测试结果如下: 1.FixedUpdate存在一帧内重复调用的情况,还有帧率低内不调用的情况,需要注意。 而Upda
HONT 阅读(50) |
摘要: 测试方法:将时间缩放变为0,逐个测试每一种协程等待,是否可跳过 1.WaitForSeconds 结果:会被影响,依赖Time.time 2.WaitForEndOfFrame 结果:不受影响 3.WaitForFixedUpdate 结果:不受影响 结果来看只有WaitForSeconds受其影响
HONT 阅读(43) |
摘要: 如果直接在脚本里改播放速度,会报出如下警告: 之前没有很好的解决方法,但根据评论里的新方法,我试了下,可以控制播放正负方向了:
HONT 阅读(229) |
摘要: 左边是Transport到Idle,右边是完全到Idle当进入过渡时,事实上Transport状态并未结束,通过下面打印出来的hash可以看出还是Transport的状态过渡结束才正式变为Idle状态
HONT 阅读(204) |
摘要: 这个想法的模型最近得到了完善,真的very cool. unity3D+css 当然这个css是节点式的,语法解析器可能也是作为扩展。从此再也不用为按钮的动画时间是0.1秒还是0.2秒,而一个面板一个面板的修改了 使用时需要加上组件,里面会指定css的key 1.css选择器 如果是多个css,只允
HONT 阅读(43) |
摘要: 录制无非两种做法,录制操作和录制行为。 录制操作要考虑到随机行为,但其实也可以两者混合。如果随机行为过多,并且随机行为无法用种子复现,可以完全用录制的方式 最后再统一压缩 这里yy的就是录制行为的做法,无非记录坐标之类的。也没想到比较cool的方法,还是一个第三方类并且侵入式的调用它的接口 创建角色
HONT 阅读(81) |
摘要: 之前写过一篇这样的文章,但当时的思路可行性太低 首先所有的UI面板通过发送字符串消息来告知,是否触发了解锁检测,tips检测,动画特效。可以理解为这样的接口: AsyncResult SendUIMessage(string message); AsyncResult是我定义的一个类,是对所有异步操
HONT 阅读(57) |
摘要: 主要解决问题是面板里含有3D模型,如果只有1个正交相机,3D模型的显示质量会很差。如果只用透视相机,UI会变形 NGUI官方的例子是使用2个UI Root,再创建一个Camera,把模型渲染到面片上。但这样有点复杂,并且对于移动平台消耗过高 测试了一阵子,现在我个人比较好的解决方法是:只使用一个UI
HONT 阅读(380) |
摘要: Fragment+random:Vertex+random, Vertex+plainVertex+Sound不是非常难,写了个大概,暂时没这方面需求先放这边了。C4D原版片段和克隆都是作为容器使用,但是顶点没做成容器有点不能理解。官方也不更新这个模块。。这个工具实现了clone,fragment,...
HONT 阅读(68) |
摘要: 修改time信息并不会立马生效,动画信息修改是在这一帧结束统一执行的。 当normalizedTime设置为0-1之外的值时,值并不会被约束回0-1范围,而动画会被约束播放到0-1之间的位置
HONT 阅读(40) |
摘要: 战神有一种攀爬是整个墙壁都可以攀爬移动,而这个项目的攀爬更类似波斯王子和神海,是沿着墙壁突起物攀爬。 攀爬分为上下攀爬和左右攀爬。左右攀爬又要考虑外拐点和内拐点,即大于90度的拐角,小于90度的拐角。内拐角外拐角 做法有3: 1.捕捉手部IK,然后混合动画。 2.直接用普通攀爬的动画旋转+混合 3.
HONT 阅读(68) |
摘要: 点乘又叫做点积,可以判断对象是否在自己前方后方,或者前方多少度。 返回的dot是一个1到-1之前的值,注意传入值要归一化。 下面用一幅图形象化的表示,可以看出当45°时得到的值是0.5或者-0.5 上面那段代码映射的方向是+forward到-forward,即+z到-z 当比较物体正对于right(
HONT 阅读(50) |
摘要: 第一版: 绿线是向量投影,有时候会超出范围,需要自己写一个约束函数,方法有很多,我用了比较Low的一种,两个点做点积来比较 后来又玩了下战神,发现这个做法其实是简陋的。实际上这种路径相机应该分为映射轴和动画轴 第二版: 基本上没什么问题了,只是那种环山公路的长镜头会有点小问题 主要是向量投影不平滑的
HONT 阅读(78) |
摘要: 摘自圣典的一段翻译: ForceAdd a continuous force to the rigidbody, using its mass.添加一个可持续力到刚体,使用它的质量。AccelerationAdd a continuous acceleration to the rigidbody,
HONT 阅读(109) |
摘要: Debug.DrawRay第二个参数方向,事实上需要手动输入长度。并且不是无限长的射线,是根据方向的长度来的如果参数不指定颜色,绘制出来的就是白色
HONT 阅读(91) |
摘要: 只是一个试验,点到即止吧
HONT 阅读(22) |
该文被密码保护。
HONT 阅读(92) |
摘要: 之前都不知道,最近看了csdn一位开发者的博文突然发现asdasdasd
HONT 阅读(117) |
摘要: 补充: unity官方有一篇文章对菜单扩展讲的不错 /cn/learn/tutorials/topics/interface-essentials/unity-editor-extensions-menu-items ContextMenu 出
HONT 阅读(150) |
摘要: 在当前帧内触发按钮事件,然后把click事件的list删去,再添加,这时候会再次触发。不确定,先记一下
HONT 阅读(22) |
摘要: Unity官方有一个详细的碰撞关系表:/Manual/CollidersOverview.html 但其实可以精简为以下几点: 1.两个勾选kinematic的刚体碰撞器不会发生碰撞。 2.勾选Kinematic的刚体碰撞器不可和无刚体碰撞器发生碰撞,但
HONT 阅读(97) |
摘要: 起因是这样,某管理器类有两个集合,A集合是模板集合,B集合是从模板中实例出的集合。但是B集合的一些东西,总会调用A集合中的,导致出错。一开始考虑clone使用不当,但检查后没发现什么问题,后来发现问题出在lambda上void Config() { mSettingHandle....
HONT 阅读(16) |
摘要: 官方例图 测试: code: 官方论坛扩展阅读LINK
HONT 阅读(58) |
摘要: 使用差乘判断左右一般是比较差乘的y,小于0是左,大于0是右。特殊情况可以用其他分量来比较 默认情况: 用forward方向,从而对有旋转的对象进行比较: 用Transform的right就可以比较是否在前后,很常用,对于赛车游戏的路点等都会用到 y&0 a在b后,y&0 a在b前 论坛上还看见一个d
HONT 阅读(86) |
摘要: (模型只是测试,随手K了下帧。。) 有很多种做法,可以用射线判断。而且射线似乎更方便 我用GameObject点来做,然后通过模型表面网格来编辑路径。多尝试一种方法而已 1.先找最近的点,判断是否是当前方向的最后一个墙壁点,如果是就跳出。 2.根据最近的点,初始化玩家方向(左还是右),朝向。然后根据
HONT 阅读(61) |
摘要: 在做unity3d的一个增强工具,用到了下有需要的朋友凑合看,go.name是string类型go.name = Selection.activeGameObject.Regex rex = new Regex(@&\d{1,}&, RegexOptions.RightToLeft);va...
HONT 阅读(23) |
摘要: [InitializeOnLoad] 加上这个特性,并且在静态构造函数里写上内容。即可在Unity启动的时候自启动这个Editor脚本
HONT 阅读(53) |
摘要: 自带的samples里面,chat的例子涉及主动推送,可作为参考。 在unity里面接收主动推送用monCallback 服务端最近的新版本更改了接口,有两种方法推送: ActionFactory.SendAsyncAction Current.SendAsync 关于服务端推送的细节
HONT 阅读(57) |
摘要: 标题有点长,做Editor工具时遇到的问题。最后解决了,总结下有可能你在界面中用了键盘事件或者其他事件,导致这个报错。官方论坛有个解释比较给力LINK我在渲染Layout和Repaint的时候加上这个判断:if (Event.current.type == EventType.KeyDown || ...
HONT 阅读(107) |
摘要: 挂上UIDragDropItem就可以实现拖拽,按钮监听Drop消息即可实现对拖放的监听。UIDragDropItem有一个Clone On Drag选项,勾上可以克隆,但会被ScrollView遮住目前没找到好方法,写了一个扩展创建一个动态Panel.把拖拽对象的父级放进去还有一个细节,如果是cl...
HONT 阅读(116) |
摘要: 用panel.localCorners而不是panel.finalClipRegion,Region还要再换算首先通过ScrollView取panel,然后取Corners,它返回值代表4个点,映射的索引分别是:0 左下 1 左上2 右下 3 右上
HONT 阅读(63) |
摘要: 获取到的Bounds值是固定的,是因为Bounds区域的计算是被动计算,需要主动调用使其刷新scrollView.InvalidateBounds();另外Bounds的Min和Max似乎和NGUI屏幕坐标是反过来的,先记一下下次研究
HONT 阅读(82) |
摘要: Scroll会计算边界,和直接拖拽的效果类似MoveRelative不计算边界,超出边界了也不会管,也不会应用缓动效果
HONT 阅读(91) |
摘要: string str = &asdsad[00ff00]qwewqe&;str = Regex.Replace(str, @&\[([a-f]|[0-9]){6}\]&, &&, RegexOptions.IgnoreCase);Console.WriteLine(str);Console.Read...
HONT 阅读(42) |
摘要: 不是关闭再激活GameObject会闪烁,而是再激活时,NGUI渲染步骤不一致导致的闪烁。并且文字激活后渲染要慢一帧,如果延迟一帧处理,又会导致精灵图片快一帧,图片重叠。这个测试结果不一定准确,先记录一下。有时间再研究
HONT 阅读(76) |
摘要: 很多人可能喜欢Linq的orderBy排序,可惜U3D里面linq在Ios上会报错,所以就必须使用list的排序。 其实理解了并不难 升序降序比较 sort有三种结果 1,-1,0分别是大,小,相等。 默认List的排序是升序排序 如果要降序排序,也很简单,只需要在前面加一个负号 对于非数值类型比较
HONT 阅读(1428) |
摘要: PrefabUtility.prefabInstanceUpdated
HONT 阅读(187) |
摘要: 今天遇到了一个Bug,因为调用Resources.FindObjectsOfTypeAll()遍历整个场景,结果遍历出的对象不对。比较哈希一查果然是两个。原来prefab本身和prefab生成对象都在场景里。那么如何区别是不是prefab,官方论坛没有比较好的解释LINK我采用的方法是用放到某个层级...
HONT 阅读(162) |
摘要: 官方提供了4档云构建功能,其中第一档免费,支持git/svn,最近又支持了Mercurial(hg)。使用时需要把ssh传过去今天试了下,一个是构建速度慢,第二个问题是平时Library目录是忽略掉不上传的,但云构建必须要你上传。总之很有潜力的一个方向,有待改善构建的Unity版本支持unity4....
HONT 阅读(1265) |
摘要: Layout这部分UGUI算是比NGUI做的到位 之前遇到了一个问题,NGUI做文字和背景框适配和容易,绑定一下就好了。UGUI你得弄Layout才可以,而且还需要配置。 但这个Layout使用场合是真的不多。。 1.简介: Content Size Fitter 这个是width/height =
HONT 阅读(482) |
摘要: 1.对应NGUI的四种文字显示模式 Shrink Content 对应NGUI第一种模式 勾选Best Fit 但似乎有一个Bug,文字过多的时候会爆框。解决方法是改变Line Spacing,但再多了又爆了,无解 Clamp Content 对应NGUI第二种模式,就是UGUI的默认模式 Hori
HONT 阅读(360) |
摘要: Canvas Render Mode - UGUI不像NGUI,它没有UI摄像机。但有时候需要做相机动画就要调出来。 在Canvas里设置第二个选项即可调出。 Pixel Perferct - 这个似乎是可以得到更好的像素显示但牺牲宽度高度,就是以前对齐的UI,现在显示效果更好但对不齐。NGUI里U
HONT 阅读(746) |
摘要: 就像主动碰撞检测需要刚体,刚体需要Mesh Filter。Unity的一些组件都需要基础配置。 UGUI的基础配置和NGUI差不多,把NGUI的那些中间件全部削减干净,甚至连快捷键也没有。 1.基础层级的依赖: 所有的UI全部放置于Canvas下,类似NGUI的UI Root。而当你创建UI会自动生
HONT 阅读(182) |
摘要: 总的来说整合了NGUI很多零散功能,比如NGUI2.X处理拉伸要额外套脚本,NGUI3.X开始引入新的锚点。再加上依赖BoxCollider使得整个HUD显示非常乱 而UGUI很清晰明了,你也能看清楚拉伸怎么设置。 但也有一些误导性的设计以及不人性化的设计。 1.Anchor RectTransfo
HONT 阅读(369) |
摘要: 第二篇测试循环时和动态创建时的调用顺序:LINK 测试版本Unity4.6。因为新版本对Transform的排序做了改变,所以不排除旧版本的测试结果不一样。测试时,使用Awake中添加Debug.log(name)来测试顺序 1.不管prefab还是非prefab。执行顺序最高的均是最后创建的。比如
HONT 阅读(92) |
摘要: 没有打开SD卡的写入权限unity提供了sd卡权限修改的参数:
HONT 阅读(20) |
摘要: 设置阻尼。Drag gravity是-100的情况下,阻尼设置为2之后,很少会穿透。测试20多次无问题。 只是偶尔还是会穿透,但概率非常小,这个暂时没办法。
HONT 阅读(130) |
摘要: Transform[],GameObject[]这些class类型,Unity会进行自动初始化。但[ExecuteInEditMode]在编辑模式下执行的时候,会发现初始化其实也是有顺序的,并且在Update之后。这时候就会遇到等于NULL的情况。
HONT 阅读(83) |
摘要: 动画播放alpha参数改变但无实际画面效果,原因是要挂一个脚本,设置实时更新数据。NGUIvoid Update(){ widget.SetDirty();}UGUIvoid Update(){ graphic.SetAllDirty();}
HONT 阅读(131) |
摘要: 不推荐用AnimationUtility.SetEditorCurve问题很多,推荐AnimationCurve.AddKey。通过AnimationUtility.GetAllCurves可以获得编辑器状态的动画属性。 GameObject m_IsActive Transform m_Local
HONT 阅读(116) |
摘要: 安卓下当你按Home键,程序会进入暂停状态。所以只能改成调用OnApplicationPause。Unity论坛上说实现IDispose接口也可以,似乎IOS可以,但安卓测试了,无效。
HONT 阅读(176) |
摘要: 测试结果为OnEnable,Start不执行。Awake不管激活未激活都执行不管是驻留在层级面板,还是手动拖上去。但是,在任何时间设为激活。就会2个都触发。Awake和Start只触发一次。这个问题很容易忽视,很多Bug都是这个原因造成的
HONT 阅读(32) |
摘要: 测试结果为关闭游戏,会调用OnDestroy().但OnApplicationQuit()比它提前调。using UnityEusing System.Cpublic class NewBehaviourScript : MonoBehaviour{ void...
HONT 阅读(135) |
摘要: Unity调安卓AndroidJavaClass jc = new AndroidJavaClass(&com.unity3d.player.UnityPlayer&);AndroidJavaObject jo = jc.GetStatic(&currentActivity&);jo.Call(&具...
HONT 阅读(47) |
摘要: runOnUiThread(new Runnable(){ public void run() { // TODO Auto-generated method stub }});
HONT 阅读(58) |
摘要: Transform到Transform的空间变换很容易,依赖层级模块就可以。今天遇到Vector3点到某个Transform的本地空间变换,试了一下解决了var point = new Vector3(0, 5, 0);var convertPoint = transform.TransformDi...
HONT 阅读(72) |
摘要: Edit-Project Setting-Editor-Asset Serialization-mode Force Text
HONT 阅读(106) |
摘要: var qua = Quaternion.FromToRotation(Vector3.forward, target.transform.position - transform.position);transform.rotation = Quaternion.Lerp(transform.ro...
HONT 阅读(81) |
摘要: 正播就是直接playitem.animation.Play(&a&);反播:item.animation.Play(&a&);item.animation[&a&].normalizedTime = 1f;item.animation[&a&].speed = -1;如果放在play前面也可以,但必...
HONT 阅读(70) |
摘要: 更新:官方的测试工具有许多问题,我修改了一个版本 https://git.oschina.net/Hont/UnitTest_Modifyed 支持切场景,异常不失败等 其实Unity很早就有测试支持,从mono编辑器的UnitTest选项,还有安装目录中的NUnit.dll都可
HONT 阅读(749) |
摘要: NGUI下拉栏主要注意2点1.弹出文字收回去,需要更新主显文字信息,要绑定调用2.有时候发现弹出来的面板差别很大看了下代码会根据父节点取相对位置。这样位置就可以了,很奇怪的做法。。
HONT 阅读(160) |
摘要: var jsonStr = JsonMapper.ToJson(tmpType);var tmpObject = JsonMapper.ToObject(jsonStr);序列化和反序列化。需要注意float类型要转换成double类型,否则会出错。序列化对私有成员似乎无效,还是要全public出来...
HONT 阅读(76) |
摘要: 主要是子节点没更新。乍一看调用UIPanel的Refresh()会管用,其实不然。解决方法调用UIPanel的Invalidate让他所有子节点更新。panel.Invalidate(true);
HONT 阅读(95) |
摘要: 本篇文章的内容以各种tips为主,不间断更新
最近更新:去除当前脚本警告, 在代码中指定,暂停当前帧,高效数组索引循环遍历 系列文章 &Unity测试系列&文章索引 Unity-Animator深入系列 uGUI学习系列(未完成) Unity DEMO学习 Unity3D Ada
HONT 阅读(589) |
摘要: Assert Store上有一个Editor Console Pro,功能非常全面,百度也能搜到破解。如果有需要建议使用,不要再造车轮 起初因为自带Console功能太弱,有不少可以提升空间。于是尝试自己写,可是写到后面发现上面那个工具。。于是大致原理明白之后发上来分享一下好了。 读到Log信息,有
HONT 阅读(1629) |
摘要: List在Unity安装目录下的..\Unity\Editor\Data\Mono\lib\mono\micro\mscorlib.dll自备反编译工具,这里用的是ILSpyBetterList不支持任何集合接口,功能简单,扩展功能只有一个排序。排序用的是冒泡。List就不多介绍了。都懂得。先开门见...
HONT 阅读(1270) |
摘要: NGUI底层绘制都是调用UIDrawCall来完成的,它会动态实例化出材质球,改变UV偏移和缩放(图集显示)。并且全部是面片UIPanel也是面片,但是内部物体遮罩比较特殊,经过查找发现,影响UIPanel内部物体遮罩的是它的shader。==============================...
HONT 阅读(1014) |
摘要: 服务端不多讲解,有一处需要改的地方。具体服务端请看WCF入门学习2-控制台做为宿主建议实际项目不要拿去用,毕竟是mono不是原生.net。或许是个坑由于Unity的mono版本问题不能直接用net.tcp。用的http绑定方式====================================/...
HONT 阅读(324) |
摘要: 直接调用position.Set会发现没有用。其实和其本身是结构体有关,要当成一个值类型来看待,因为他全部是在栈中。transform.position.Set(10,0,0);改成这样即可:var tmp = transform.tmp.Set(10, 0, 0);transform.position =结构体在集合中的操作也是一样:vec3Arr = new List();vec3Arr.Add(new Vector3());//位置不会改变.vec3Arr[0].Set(100, 0, 0);transform.position = vec3Arr[0];//
HONT 阅读(144) |
摘要: 当初弄不明白旋转。。居然找不到资料四元数应该用轴角相乘。。。后来自己摸明白了通过两种旋转的配合,可以告别世界空间和本地空间矩阵转换了,大大提升效率。每个轴相乘即可,可以任意轴,无限乘。无万向节锁问题四元数旋转:using UnityEusing System.Cpublic class RotationTest : MonoBehaviour{ public float x, y, void Start () { } void Update () { var xRot = ...
HONT 阅读(340) |
摘要: 要设置shader里有下划线的属性名,而不是后面字符串的属性名。Color tmp = new Color(1,1,1,alpha);mat.SetColor(&_Color&, tmp);
HONT 阅读(142) |
摘要: 把脚本放在所有组件的最上面然后刷新一下就好了如果还是显示不支持就是参数问题。比如不支持bool参数,但支持string参数。所以最好用无参数的
HONT 阅读(270) |}

我要回帖

更多关于 unity external tools 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信