unity

unity最简单的动态添加排行榜

给你一囗甜甜゛ 提交于 2020-01-22 16:10:42
每个游戏中都会有一些排行 比如传奇游戏中的战力榜 伤害榜 氪金榜等 这里给大家一些最最简单的排行榜的代码 private List < int > score = new List < int > ( ) ; private int [ ] nums ; private Text ScoreText ; private string UItext = "" ; private void Start ( ) { for ( int i = 0 ; i < score . Count ; i ++ ) { nums [ i ] = score [ i ] ; } Array . Sort ( nums ) ; ScoreText = GetComponent < Text > ( ) ; for ( int i = 1 ; i < nums . Length + 1 ; i ++ ) { UItext = UItext + "第" + i + " : " + nums [ nums . Length - i ] . ToString ( ) + "\n" ; } } private void Update ( ) { ScoreText . text = UItext ; //分数的处理代码区域 下面用gold举个例子 int gold = 100 ; score . Add (

【Unity插件】NGUI核心组件之UIPanel .

纵然是瞬间 提交于 2020-01-22 15:03:46
转自: http://blog.csdn.net/daiguangda/article/details/7840084 UIPanel负责创建实际的集合图形。你不需要手动的添加UIPanel-一旦你创建一个控件,它会自动被添加。如果你想将你的UI渲染拆分到不同的Draw Call中,你可以手动创建你自己的UIPanel,例如你要创建一个分屏的游戏,每个屏用一个摄像机进行渲染,这种秦光下你就需要2个UIPanel来避免控件互相重叠。 参数 Panel Tool 决定这一个Panel是否会显示在Panel Tool中。那些动态创建的临时Panel可以将这个选项关掉,比如那些HUD血条,滚动战斗文字等。 Normals 标志让你选择UI的几何图形是否会受到法线和切线的影响。如果你的UI会受光照影响,那么这个选项需要被选上。 Depth Pass 让你添加一个额外的之渲染深度的Draw Call。打开这个选项可以节省部分填充率,因为在你的不透明的控件后面的物体都不会再被渲染。 ----------------- Widgets 告诉你这个Panel渲染了多少个控件 Draw Calls 告诉你这个Panel会消耗多少个Draw Call。这个数值越低,效率越高 Debug Info 让你选择显示哪种调试信息 Clipping 让你选择是否需要裁切功能。默认情况下不会有裁切

Unity / custom font自定义字体

血红的双手。 提交于 2020-01-22 11:03:48
Unity / custom font自定义字体 1、首先,在Unity的Project面板,右键Create->custom font 2、选择一张特殊字体的图片 这是图片的属性,记住宽度和高度的比例 (图片的类型为Default就可以了) 3、在Unity的Project面板,右键Create->Material 4、将图片添加到材质球上,材质球的Shader类型随意 5、将材质球拖到custom font的Default Material 6、Character Rects的值设为11,这里我只将0、1、2、3、4、5、6、7、8、9、%设置为字体 7、(啰嗦了半天,下面才是重点)每个Element下面的参数 (1)Index也就是对应的ASCII码值,当我们在Text文本框输入0、1时,如果想让Text也显示0、1,那么ASCII值要对应,比如0-9分别对应ASCII表的48-57 (2)Uv 也就是我们该如何切割这张图片,不多解释,看图: (3)Vert 也就是将(2)中进行Uv切割的图片,设置字体的大小和位置,(其中X和Y的值不要轻易改动,为0就好,因为X和Y的值设定后,字体的位置也将固定) (4)Advance 当输入0346时,这四个数字之间的左右距离,我这里设置为80 8、最后的设定结果如下 9、给UI / Text添加自定义的字体时

Unity 光照贴图自动化批量烘焙打包

↘锁芯ラ 提交于 2020-01-22 03:20:47
异步批量烘焙光照贴图自动化打包 private void AsyncBake ( ) { if ( ! Lightmapping . isRunning ) { Lightmapping . completed = null ; Lightmapping . completed = TimeUsed ; Lightmapping . completed + = ResetObjStatic ; Lightmapping . completed + = SaveBakedLightMap ; Lightmapping . completed + = BakeNewObj ; StartBake ( ) ; BakeNewObj ( ) ; } else { Lightmapping . Cancel ( ) ; UpdateBakeProgress ( ) ; } } private void StartBake ( ) { _curBakedIndex = 0 ; if ( _bakeList . Count == 0 ) { _status = "Nothing To Bake" ; _bakeButton = "Bake" ; } } private void BakeNewObj ( ) { if ( _curBakedIndex < _bakeList . Count )

Unity生命周期与各个组件的Awake()、Start()等默认函数的执行顺序

China☆狼群 提交于 2020-01-21 21:30:42
同一组件的Awake()、Start()等函数的执行顺序,其顺序按照Unity生命周期来执行,如最后的图片所示。但是不同组件的同一种默认函数执行顺序如何? 不同组件的默认函数执行顺序与其ID有关,越晚建立的组件,其ID越小,所以其默认函数执行得越早。这个执行顺序与排列顺序、层次关系等无关。 说白了,当拖入Scene时,其顺序就已经被系统决定了,而且越晚拖入的执行越早。 参见 https://www.bilibili.com/video/av21369355 Unity生命周期 Unity 生命周期 来源: CSDN 作者: klm123698745 链接: https://blog.csdn.net/klm123698745/article/details/104064393

Unity向量按照某一点进行旋转

戏子无情 提交于 2020-01-21 05:30:52
一、unity的旋转 首先要知道一点就是在Unity的旋转中使用过四元数进行旋转的,如果对一个物体的rotation直接赋值你会发现结果不是你最终想要的结果,这个时候我们需要去借助Quaternion来进行旋转。 二、向量按照原点进行旋转 用到的Unity内置方法Quaternion.AngleAxis(float angle,Vector3 axis) 第一个参数就是我们需要旋转的角度 angle大于0时是按照顺时针的方向进行旋转,angle小于0是按照逆时针的方向旋转,这里的旋转时按照坐标原点进行的旋转。 第二个参数是旋转轴,围绕哪一个坐标轴进行旋转。 注意:使用这个方法时获得的也是四元数,我们将其转换成向量Vector3是需要乘以自身的坐标(四元数 * 自身向量,如果反过来 自身向量 * 四元数 在Unity会发生编译错误,这里需要注意一下) 案例:将Vector3(1,0,1)按照原点旋转45°,90°,180°,270°测试分别用黑、黄、蓝、绿颜色表示 代码如下: using UnityEngine ; [ ExecuteInEditMode ] public class VectorDirTest : MonoBehaviour { // Update is called once per frame void Update ( ) { Debug . DrawLine

unity中的World Position 和Local Position 以及Transform中的实例方法transformPoint()的用法

六眼飞鱼酱① 提交于 2020-01-21 04:04:15
一,在unity中改变游戏对象的位置时需要区分World Position和Local Position,其中Position是相对于世界的,Local Position是相对于父对象的,在Inpector面板中Transform组件中的Position实际上是Local Positon。 可以理解为该游戏对象的World Positon =父对象的Worl Positon + 该游戏对象的Local Position 例如:Capsule 和 Cube 的分层如下 其中Capsule 的transform面板为 则对于Cube 有 二,关于public Vector3 TransformPoint(Vector3 position) 我关于这个方法个人的理解是,将该参数Vector3 position 转换为该物体的世界世界坐标,即传入的参数加上该物体父对象的世界位置。 测试脚本: using System.Collections; using System.Collections.Generic; using UnityEngine; public class transformPoint : MonoBehaviour { // this script is to explore the use of Transform.transformPoint public

Unity编辑器扩展——标签属性Attribute

∥☆過路亽.° 提交于 2020-01-21 02:58:51
——[HideInInspector] 将公有的变量在Inspector面板上隐藏 [HideInInspector] public int value; ——[SerializeField] 将私有的变量在Inspector面板上显示出来,但此变量的访问级别还是私有的 [SerializeField] private int value; ——[Header("标题内容")] 给变量添加标题 [Header("变量")] public int value; ——[Space(间距数值)] 给变量间添加间距 [Space(50)] public int value; ——[Tooltip("悬停内容")] 给变量添加悬停内容 [Tooltip("这是一个变量")] public int value; ——[Range(min,max)] 给int、float、double这种数字类型变量添加范围 [Range(0,10)] public int value; ——[Multiline(行数)] 给string类型变量设置行数 [Multiline(5)] public string str; ——[TextArea] 把string类型变量在Inspector面板的显示变成一个TextArea [TextArea] public string str; ——[ColorUsage

unity shader 自定义定时器函数 interval

梦想与她 提交于 2020-01-21 00:53:37
如果代码中有什么不清楚请查看以下基础知识 Shader基础知识 unity3d 中 七种坐标知识详解 定时器函数 shader中没有定时函数,大部分时间相关的都要用_Time.y、_SinTime.w 来实现。 我的需求是指定几秒后触发条件,在指定的时间区域内不断重复提醒。到点返回间隔时间的true,没到点返回间隔时间的false,简单吧。 当然也可以直接使用_Time.w >- 0实现。.w是计算sin(t)。 将下面函数直接放进shader中的subshader>pass中,然后直接在着色器中调用即可 bool timeInterval ( float interval ) { //如果当前的时间余(间隔时间*2),返回的数是0-interval*2 // _Time.y当前时间,单位是秒 float intervalTime = _Time . y % ( interval * 2 ) ; //计算的时候是双倍时间,验证的时候用单倍时间,是因为不想面对琐碎的小数阈值 if ( intervalTime >= interval ) { return true ; } else { return false ; } //简化版 return _Time.y % (interval * 2) >= interval; //着色器 float4 frag ( v2f i ) :

不依赖插件 给 Unity 项目接入 Lua

三世轮回 提交于 2020-01-20 18:45:32
之前在公司给项目接入过 xLua .接入过程非常傻瓜. 又了解到 Unity 由于历史原因,有各种各样的 lua 接入插件。 slua,xlua,tolua 等等层出不穷。 如果是为了直接在 Unity 项目里使用 Lua,使用现成的插件肯定是最好的选择。如果是为了学习,就需要自己亲手实践一番 之前并不了解 unity 接入 lua 的原理 。 最近通过公司的项目,查阅看官方文档,了解到 Unity 能够使用 C# 代码调用 C++ 写的动态链接库,由此试验了一下从0开始接入 Lua 过程记录如下 #Unity 集成 Lua 文档参考Unity 官方文档 Working in Unity -> Advanced Development -> Plug-ins -> NataivePlug-ins 章节 https://docs.unity3d.com/Manual/NativePlugins.html [file:///D:/UnityDocumentation_2019/en/Manual/PluginsForDesktop.html](file:///D:/UnityDocumentation_2019/en/Manual/PluginsForDesktop.html) 参考示例 https://github.com/Unity-Technologies