- 博客(23)
- 资源 (2)
- 收藏
- 关注
原创 Unity 代码实现多个Image帧动画播放
using UnityEngine;using System.Collections;using System.Collections.Generic;using UnityEngine.UI;using System;[RequireComponent(typeof(Image))]public class UGUIImageAnimation : MonoBehaviour{ private Image ImageSource; private int mCurFrame
2021-10-27 15:42:57 832
原创 Unity 排序组件 不及时刷新
实际效果需求效果1.先设置数据2.设置位置3.LayoutRebuilder.ForceRebuildLayoutImmediate(background.rectTransform);
2021-10-27 12:07:36 2010
原创 让Unity中的多个模型共用同一个材质球
如何让Unity中的多个模型共用同一个材质球呢?下面我就来分享一下我之前在做模型的时候所使用的方法和思路,供大家学习。Unity文档中曾明确提到,尽可能的共用Material,这主要是因为渲染引擎一般会按照材质对需要渲染的对象进行排序,同一个材质的模型可以合并到同一个批次进行渲染。所以,文档中建议一个模型尽量只采用一个材质,一类模型最好共用一个材质。但是在实际制作过程中发现,使用同一张texture的模型在导入后Unity会为每个模型生成一个Material,而且导入到Unity中的模型还不能修改Ma
2021-02-07 19:05:01 3909
原创 Unity UGUI锚点问题
公司招了个拼UI的 没有什么经验 拼出来的UI无法自适应屏幕NGUI自带自适应,UGUI的自适应就得靠锚点了什么是锚点(Anchor)?锚点有什么作用?举个例子 把锚点设置在右上角,之后进行拖拽,会发现无论怎么拖拽,图片距离锚点的位置都没有任何变化UGUI自适应,子控件和锚点的距离永远不变,锚点与控制点的距离不会被拉伸简单来说就是中心点距离锚点的位置不变验证一下 锚点放左上角,距离锚点的位置依然不变常见屏幕自适应设置如何设置锚点?按住Alt设置 当然你可以自己设置有一位博主
2020-12-01 21:54:35 1708 1
原创 Unity ToLua框架整理(一) C#和lua函数调用
记录下 方便自己用Lua代码lua代码放在tolua自带的lua目录local GameObject = UnityEngine.GameObject local Input = UnityEngine.Inputlocal Vector3=UnityEngine.Vector3local Transform=UnityEngine.Transformlocal objlocal a=10function Add(amount) a=a+amount; return aend--
2020-11-28 22:03:18 986
原创 Unity C# 短时间生成不同随机数
随机数不够随机的问题,特别是放在for循环里的随机数,很容易出现连续几个值都一样这是在实例化Random类时,如果随机种子不填写,默认是以时间线作为种子进行伪随机运算,当计算运行速度过快时,导致所有的随机种子都是一个值。改用Guid的哈希码作为种子值,就不会重复了。Guid.NewGuid().GetHashCode()public static void Main(string[] args) { int[] a=new int[10]; f
2020-11-26 11:53:59 1027
原创 Unity 投掷色子 判断哪一面朝上
using System;using System.Collections;using System.Collections.Generic;using System.Linq;using UnityEngine;// 一个为摇色子服务的脚本// 色子朝上的面默认为世界空间的正方向,只用1,2,3来定义世界空间// 的向量,比如1代表世界的上,2代表右,3代表前//public delegate void RollCompleteEvent(object sender, int faceUp
2020-11-11 08:50:45 882
原创 Unity AB包资源加载
using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Events;using UnityEngine.Experimental.GlobalIllumination;public class ABManager : MonoBehaviour{ public static ABManager Instace; private void Awa
2020-11-02 20:35:23 1062
原创 Unity 点乘(Dot)判断目标在物体的前后左右上下
我们一步一步从最基础的来,刚开始学习Unity的时候分不清up、right、forward,用这张图就非常清晰了Vector3.forward和transform.forward的区别v3.forward:坐标系中的z轴的正方向(蓝轴),该值固定为(0,0,1)x、y轴同理transform.forward:物体自身坐标系中的z轴(蓝轴)的方面在世界坐标系中的指向。对于物体来说,该参数就是物体自身的正前方。x、y轴同理这个问题详解 上面两条是对这个详解的简化点乘(Dot)点乘
2020-10-26 21:14:32 6822
原创 Unity 结合数据库实现商城购买装备以及数据更新
这周六在家没事可做,游戏荒ing,做个商城教学,针对有一定基础的新手,先分析下商城购买装备是怎么实现的购买流程查询改装备的价格查询当前玩家有多少钱判断钱够不够买装备如果够:召唤师的钱-=装备的钱查询现在玩家有什么装备给玩家添加改装备查询该装备的属性加成查询玩家属性值更新玩家属性值:英雄属性+=装备属性加成先看下最终效果图我们一步一步的来,先从最简单的开始一、准备工作随便搭个简单的商城界面,配置下sql数据像这样二、封装数据库(SqlBase)之后另开一篇来讲sq
2020-09-06 15:24:07 1370
原创 Unity 多重材质球替换、多重材质球特定贴图替换、Materials替换
又被问到多重材质球的特定材质球怎么替换。之前遇到这个问题的时候,天真的以为可以用skinned.materials[0] = xxx替换,结果不能替换,但是材质球特定的贴图是可以替换。想到materials是个数组,结果用一组材质球替换就成功了。 public Material[] mat; public Texture texture; SkinnedMeshRenderer skinned; //替换多重材质球 skinned.materials = mat;//替换多重材质球里特定贴图
2020-09-02 11:16:46 3030
原创 Unity LitJson读取数据、读取json文件
第一次用litjson的时候,在网上搜资料,各种各样的写法,我绕了好大的圈才搞懂。今天又被人问道LitJson读取json文件,他也没在网上找到很好的解释。json是用得比较多的存储方式,解析json并不难,新手容易搞不清json格式这次我们解析一个较长的json文件,json数据是在聚合数据下的,额这个也教一下吧,下json数据的教学放在文章的后面一、解析json数据首先我们先解析一个简单的json数据(文件中一段数据)方便更好的理解"uniquekey": "db67681bab14888f5
2020-09-01 21:26:56 2996 1
原创 Unity DoTween插件使用
DoTween下载链接:6r7aDoTween官网API解释:DoTween文档下面是我对b站龙子赫赫的教学视频链接的总结整理,方便之后用到的时候查询一、一些基础功能 Gradient gradient; void Start() { //目标点 时长 //transform.DOMove(Vector3.one, 3); //旋转 //transform.DORotate(new Vector3(100, 100
2020-08-30 21:48:11 722
原创 Unity Animator.StringToHash-----哈希
之前在做动画处理的时候一直用的是字符串,最近看案例的时候发现了Animator.StringToHash-----通过Hash ID进行引用,Animator.StringToHash把字符串转换成Hash ID。通过“Hash ID”更有优势,因为不容易出错,且更加高效。两种的使用方式不同。animation状态或者parameters的字符串(Tag)需要通过对象使用;但是“Hash ID”不需要,是Animator的静态方法。下面是示例代码public class GameConsts{
2020-08-27 16:39:33 2675
原创 Unity 复制Hierarchy面板物体路径
之前自己测试一些小功能一直用mac版unity(2018.3.5),mac版可以直接复制Hierarchy面板物体路径,windows版就没这功能,很麻烦,还得一个一个复制,就写了这个小功能代码放在Edito文件夹下 [MenuItem("GameObject/CopyPath", priority = 20)] static void CopyPath() { Transform trans = Selection.activeTransform; if
2020-08-10 18:31:58 1119
原创 Unity 实现选框选中物体
最近在看RTS游戏视频注意到了选框功能,就尝试做了一下功能实现脚本挂载到Camera上,要不然OnPostRender()函数无法调用,rectMat新建一个材质球,设置成默认的Sprites就可以了using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.Rendering;public class Test选框 : MonoBehaviour{
2020-08-09 00:16:51 1794 2
原创 Unity 3D物体、UI同屏||3D物体在UI界面显示
先来猜一下这两个石头人 哪一个是UI 哪一个是3d物体答案是中间那一个,这种UI显示3D物体适用很多场景,比如说商店展示模型展示、例子特效、2.5d游戏,实现起来很简单,接下来我们实现一下实现步骤1、新建一个相机 对准角色2、UI新建一个RawImage(别忘了吧尺寸调大一点 要不然会不清晰)3、新建一个RenderTexture,把他赋给RawImage和Camera4、把相机设置一下,把Audio移除,clear flags设置成solid color,之后你就会看到3d物体显示在im
2020-08-03 18:40:29 3569 3
原创 Unity 制作虚拟遥感操控人物旋转移动实现+案例
效果图遥感,分圆内圆外两种情况,在圆内遥感的位置等于鼠标位置,在圆外,遥感位置是在大圆边缘(遥感位置=鼠标位置圆心位置的单位向量*相差半径+遥感初始位置)角色旋转原理,人物z轴对用遥感y轴,形成一种映射。人物提供一个自身旋转转的方法,遥感可以计算出角度,得出角度之后把值付给人物,使人物旋转代码我大部分都标记了,在这就不多解释了,自行看代码using System.Collections;using System.Collections.Generic;using UnityEngine;
2020-08-02 21:31:29 2404
原创 Unity 读取txt配置文件框架简单封装
通过读取txt文件,避免直接在程序内进行更改数值,可以直接在txt更改游戏数据。这次写的框架是简单版,只能读不能存,大家可以继续扩充用的是上次fsm框架的场景首先把读取文件的代码封装一下---------------之后还会用到(Audio,sql…)代码并不是很难,我就不过多解释了using System.Collections;using System.Collections.Generic;using UnityEngine;using System.IO;public class
2020-08-01 18:44:05 422
原创 Unity FSM(有限状态机)框架的使用
using System.Collections;using System.Collections.Generic;using UnityEngine;public class StoneIdle : FSMBase{ Animator animator; public StoneIdle(Animator animator) { this.animator = animator; } public override void OnEnter.
2020-07-31 19:18:10 748
原创 Unity FSM(有限状态机)框架的简单封装
using System.Collections;using System.Collections.Generic;using UnityEngine;public abstract class FSMBase{ //进入这个状态 public abstract void OnEnter(); //正处在这个状态 public virtual void OnStay() { } //退出这个状态 public virtual void
2020-07-30 11:42:10 905
原创 U3D mesh合并 代码实现(一)
mesh合并:几个不同的物体,在Unity3d中可以将网格合并在一起,用于优化。打个比方,传输两个1G的文件,第一个是文件就一个资源大小是1G,第二个文件有1000个子文件,每个子文件有1M。这个不用多说,肯定是第一个传输速度比较快。合并的意义在于减少drawcall,原来的顶点可以从内存中卸掉, 合并的模型使用的是同一张贴图。mesh合并和静态、动态合批:我之前也很迷,在网上解释也是云里雾里,这两条比较明了静态合批就是Mesh合并,动态合批是每一帧都进行一遍的Mesh合并。动态合批,是由uni
2020-07-24 17:49:50 956
原创 U3D A星寻路插件(A* Pathfinding)入门教学
首先说一下A星寻路和unity自带的NavMesh区别:并没一种寻路适合所有场合,选择都是基于需求而定的。A 算法*与贪婪算法不一样,贪婪算法适合动态规划,寻找局部最优解,不保证最优解。A*是静态网格中求解最短路最有效的方法。也是耗时的算法,不宜寻路频繁的场合。一般来说适合需求精确的场合。与启发式的搜索一样,能够根据改变网格密度、网格耗散来进行调整精确度。使用的地方:a. 策略游戏的策略搜索b. 方块格子游戏中的格子寻路...
2020-07-24 09:39:45 2764 2
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人