Unity3D开发
【unity3D】“从小白到大牛” 的_辛酸成长史_
Excellence_For_You
For you and For myself.
展开
-
Unity小结-优化
1.为他人的系统做优化,需要注意什么?2.如何降低drawCall?3.如何在UI上降低DrawCall?4.UI有哪些优化方式?5.手机发烫的原因?如何处理?6.GC工作原理,如何减少GC?7.unity优化。原创 2020-11-15 22:32:54 · 1825 阅读 · 4 评论 -
Unity面试总结-功能实现
1.从接到任务到完成任务,一共几个过程,每个过程注意什么?2.设计一个背包系统,格子500. 伪代码实现 增,删,改,查。struct{ string uid,int index, int count, int itemcode}3.描述一下背包如何实现?4.如何在UI上显示模型?5.Lua和C#是如何实现通信的?6.做ui过程中需要注意什么?如何避免...原创 2020-11-15 22:33:15 · 1472 阅读 · 5 评论 -
Unity面试总结-Lua
1.写lua代码时需要注意什么?如何避免2.Lua内存泄漏是什么?如何处理?3.Lua中的关键字有哪些?变量类型有哪些?原创 2020-11-15 22:33:27 · 820 阅读 · 0 评论 -
unity小结-C#代码方面
1.写C#代码时应注意什么?如何避免?2.C#中的关键字有哪些?有什么作用?3.C#中的“值类型”和“引用类型”有哪些?两者的区别4.ref 和 out 关键字的作用和区别?5.static关键字的使用?6.C#和Lua的优缺点?......原创 2020-11-15 22:33:36 · 560 阅读 · 1 评论 -
Unity-性能调优
1.静态合批的原理是什么?会造成开销么?如果会,开销有哪些?静态批处理:游戏导出时,在player setting中勾选static batching,导出包的时候就进行批处理,导出来的包就会比较大。 在游戏场景中勾选场景的static选项,在加载场景时,会进行一次静态批处理合并,导出来的包不大,但加载时会使内存变大。 场景中有4个物体,如果都勾选静态选项,在进行静态批处理的时候,引擎会判断这4个物体是否共用同一渲染材质。如果共用同一渲染材质,则会将这4个物体视为可批处理的对象,引擎会基于单个渲染对象原创 2020-11-15 22:33:44 · 1422 阅读 · 3 评论 -
Unity问答-框架设计与资源管理
目录1.Unity项目框架是如何设计的?有哪些原则?2.资源管理是如何做的,如何更新与打空包?3.资源管理的平台,版本,渠道是如何管理的?4.项目框架是如何让美术,策划,程序愉快的工作的?5.真机调试,看打印日志你是如何处理的?6.Unity如何避免多人提交代码冲突?7.框架你用了哪些设计模式,分别是什么?解决什么问题8.你的项目是如何做热更新的?9.框架设计里面你常用的第三方库和插件是哪些?解决哪些问题?10.聊聊ECS框架,DOTS模式。11.Addressa原创 2020-10-13 12:03:06 · 959 阅读 · 0 评论 -
unity问答-基础知识与数据结构
1.委托是什么?Event关键字有什么用?委托:用于将方法作为参数传递给其他方法。事件处理程序就是通过委托调用方法。 你可以创建一个自定义方法,当特定事件发生后,某个类就可以调用你这个方法。 可以将多个方法赋给同一个委托,调用时,依次调用其所有绑定的方法,也可以取消。 举例:遇到不同国家的人,以不同的方式打招呼。 using System;using System.Collections.Generic;namespace UnityBase{ //委托 publ原创 2020-10-10 17:29:59 · 1062 阅读 · 0 评论 -
Unity优化小技巧
1.尽量减少GetComponent调用,因为会有额外GC,且会回调到Native(C++),增加效率损耗。建议缓存为变量。 Image m_image; void Start () { m_image = GetComponent<Image>(); }2.尽量不要频繁判断UnityEngine.Object == null根据源码可以看到 == null 的判断会导致调用 IsNativeObjectAlive,这个接口的损耗是一般C#对象==null的N倍,所以建原创 2020-08-14 16:22:28 · 599 阅读 · 0 评论 -
Unity内存优化小技巧
资源优化:资源主要可分为以下几种:纹理texture,网格mesh,动画片段animationClip,音频片段audioClip,材质material,着色器shader,字体资源font以及文本资源textTexture:1.texturepacker合并整图2.Android平台用 ETC2 格式压缩,IOS用 PVR/ASTC 压缩纹理3.Read & Write一般情况下,关闭纹理资源的“Read & Write”,因为开启该选项会使纹理内存增大一倍.原创 2020-08-15 17:41:59 · 2101 阅读 · 0 评论 -
Unity相机碰撞遮挡处理
相机组件结构:一般是相机根节点处理,相机跟随,旋转。mainCamera处理相机距离。当角色靠近墙壁,墙壁处于摄像机和角色之间时,会遮挡角色,处理方法是,把相机距离拉近。using System;using System.Collections;using UnityEngine;namespace UnityStandardAssets.Cameras{ public class ProtectCameraFromWallClip : MonoBehaviour原创 2020-07-22 15:48:47 · 1724 阅读 · 0 评论 -
PostProcessing 屏幕后处理
安装PostProcessing、PostProcessing是unity内置的后期效果增强组件,可以在极短的时间内得到各种常用特效的效果PostProcessing可以在资源包管理器中直接安装得到。PostProcessing Layer首先我们需要在相机中添加一个Post-process Layer组件来渲染相机图像。Trigger触发器默认是相机本身,如果有需要可以设置为其他物体,如挂载到角色上面,可以实现进入特定区域触发特效Layer是一个很重要也很容易忽略的角色,必须保证.原创 2020-08-06 19:59:50 · 802 阅读 · 0 评论 -
Unity3D个人作品展示(Awakening觉醒森林)
链接:https://pan.baidu.com/s/1Fg-mp_OVBuH4guFPJLz1Eg提取码:j5na游戏截图:原创 2019-08-01 18:21:29 · 3260 阅读 · 2 评论 -
Unity3D——服务器和客户端
服务器:using System;using System.Collections.Generic;using System.Linq;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;using System.Threading.Tasks;namespac...原创 2019-07-31 20:46:51 · 5344 阅读 · 0 评论 -
毕业设计之剧情设计
(初想法,不代表最终结果)主角-Leery: 在冬天的一个晚上,像往常一样,Leevy正坐在电脑面前,劈里啪啦的敲着键盘。 Leevy:好困呀!(哈欠),毕业设计要做什么呢?好烦啊。 突然,一阵眩晕,Leery感觉自己掉了下去。 睁开眼发现身处一个陌生的世界。而且自身的样子的也变得很奇怪。 Leevy:o((>ω< ))o,这里...原创 2019-01-09 14:37:55 · 420 阅读 · 0 评论 -
毕设之初想法
游戏名:“愤怒的程序员”类型:3D,动作,冒险游戏背景:某毕业生正在做毕业设计,发现自己穿越到了异世界,面对成群的错误怪物,开启了屠杀的错误之旅。内容:登陆系统------序列化保存读取,或者数据库设置系统------设置分辨率,声音,其它等,用团结内置保存函数。储存系统------序列化存储数据,读取数据选角系统------两个模型提供选择,选择后加载到游戏场景...原创 2018-11-14 13:00:36 · 529 阅读 · 0 评论 -
毕设之旅第1站---角色控制2
角色跳跃,翻滚,前冲,RootMotion继续补充角色的动作在“Leevy”状态机里,Base Layer层,拖入“jump”动画。Parameters里新增 Trigger,"jump"。在这里新增加一个判断条件,动作只能在地面上才能进行。因此,增加一个Parameters, bool型的"isGround",后面会进行检测。从“ground”拉线到“jump”,取消勾选“Has...原创 2018-11-20 14:31:13 · 236 阅读 · 0 评论 -
毕设之旅第1站---角色控制1
角色idle,行走,跑步第一步:导入模型创建一个Plane,作为临时地面。创建一个Capsule,命名为《Player》,去掉Mesh,保留collider,center的Y值设为1,作为角色的控制柄。把model放在player下。为model添加animatior组件。第二步:状态机创建一个“Animator Controller”,命名为“Leevy”,赋值给mo...原创 2018-11-20 12:23:36 · 219 阅读 · 0 评论 -
Unity3D为3D物体添加点击事件
1.相机添加脚本《ClickEvent》:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;public class ClickEvent : MonoBehaviour { public GameObject...原创 2018-10-18 17:05:09 · 10506 阅读 · 4 评论 -
Unity3D使用UDP协议实现两个程序传递信息
发送端: 调用Send()方法,传递发送的内容。using System.Collections;using System.Collections.Generic;using UnityEngine;using System.Net;using System.Net.Sockets;using System.Text;using System.Threading;...原创 2018-09-11 10:37:12 · 3294 阅读 · 4 评论 -
Unity3D通过鼠标滑动改变数值
using System.Collections;using System.Collections.Generic;using UnityEngine;using DG.Tweening;public class MyChangdeIndexBySlider : MonoBehaviour{ public int minIndex; public int maxI...原创 2018-09-11 18:01:00 · 3757 阅读 · 5 评论 -
Unity3D警报灯
功能介绍:角色进入危险状态,触发警报灯。灯光开启,逐渐变亮,亮度达到最大值,逐渐变暗。 角色脱离危险,警报灯关闭。同时触发报警音乐的开启和关闭。首先在场景中添加一盏警报灯。(Alarm Light) 设置好其Transfrom,Tag等。 默认不开启,Intensity值为0. 颜色一般为暗红色RGB(70,0,0)。 Culling Mask为Everying,不参与烘培,Mode为R...原创 2018-06-08 20:03:53 · 3219 阅读 · 3 评论 -
Unity3D场景转换效果
功能介绍:加载场景时画面会逐渐变亮,退出场景时(或者角色死亡)画面逐渐变暗。添加一个RawImage对象,设置Tag。 使其铺满整个屏幕 设置Color为合适的值,例RGBA(128,128,128,178); Canvas下添加一个Ganvas Group组件,设置Alpha为0.5;添加脚本:using UnityEngine.UI; //引入...原创 2018-06-08 20:50:04 · 6091 阅读 · 0 评论 -
Unity3DRPG人物头顶血条跟随
创建血条UI; 创建角色物体,挂载脚本; 获得角色位置坐标,转化为屏幕坐标。 Vector3 pt = Camera.main.WorldToScreenPoint(new Vector3(this.transform.position.x, this.transform.position.y + 1, this.transform.position.z)); 设置UI坐标,屏幕坐...原创 2018-06-16 10:48:00 · 5574 阅读 · 0 评论 -
Unity3DNGUI多语言切换
NGUI自带本地化系统支持所有UILabel文本语言切换。 1.为一个Sprite添加LanguageSelection控件,会自动变成一个PopupList组件。 2.为需要语言切换的UILabel添加UILocalize组件。 设置好Key。 3.Localization.txt文件设置 路径为:Assets/NGUI/Examples/Res...原创 2018-06-16 11:15:53 · 4426 阅读 · 0 评论 -
Unity3DUGUI界面系统Canvas
【图形与用户界面】UGUI系统特点:灵活,快速,可视化。UI概要:Canvas(画布):Canvas 是游戏对象上的一个组件,所有的UI组件都要绘制在画布里面。创建画布,系统自动创建EventSystem组件,这是UI的事件系统Render Mode(渲染模式):Screen Space-Overlay渲染模式:UI被渲染在屏幕上,即使没有相机,也将呈现UI。...原创 2018-08-12 15:51:19 · 1886 阅读 · 0 评论 -
Unity3DUGUI防止界面遮挡
BUG:一个公共UI界面,底部有一个【Home】按钮。当其中一个界面是一个Sprit,大小和整个界面一样时,该页面显示时,【Home】按钮单击不了。解决方法:为该按钮组件 添加一个【Canvas】组件。 勾选【Override Sorting】 修改【Sort Order】的值,该值越大,该组件越靠上。 添加【Graphic Raycaster】组件,该组件的作用是,设置多个...原创 2018-08-12 16:05:26 · 4448 阅读 · 1 评论 -
Unity3DDoTween动画播放异常
BUG出现原因:当一个DOTween动画播放时长大于0s; 该动画还未播放完毕,便开启另一段动画; 并调用该动画的关闭函数。BUG: 上一段本应该结束的动画,没有结束。解决步骤:为动画设置ID 在关闭此动画的方法调用 DOTween.Kill("ID");public class TweenChange: MonoBehaviour { public...原创 2018-08-12 16:20:55 · 3459 阅读 · 0 评论 -
Unity3D自己写导航
介绍:unity界面开发,会用到很多导航的按钮,他们是公共的,单击其中一个按钮,显示对应的界面。unity中,UGUI自带Toggle组件,NGUI也有Toggle复选框,都方便了开发者的开发。但是只有合适自己才是王道。今天,就用普通的按钮组建,来编写自己的导航。导航的组成:总控制 按钮组 面板组步骤:编写脚本:<NavigationButton> ...原创 2018-08-14 12:10:28 · 2027 阅读 · 2 评论 -
Unity3DAlpha Mask UI插件制作流光特效
效果图:制作步骤:导入Alpha Mask UI Sprites Quads 2.1 插件unity中创建一个空的根节点节点下面 一个空物体Mask 添加 Alpha Mask脚本。light,mask 制作:light:(移动的,白色显示,黑色不显示)mask:(遮罩,不动的) 然后:为light添加材质最后,用脚本控制light的移动...原创 2018-08-21 11:16:38 · 5496 阅读 · 5 评论 -
Unity3DDOTween使用经验
DOTween插件用来做动画有多方便就不多解释了,这里总结一下最近使用的经验。 每一个tween动画,都可以复制给一个 Tweener 对象,可以很方便的管理。 tweener可以控制动画的播放,暂停,倒放,播放速度,自动销毁,循环,动画效果等等一系列所有问题。TogglePause(),触发一次该事件,就播放,再触发一次暂停,然后再播放。字面意思理解。From() 从目标状态——...原创 2018-08-23 16:38:46 · 4656 阅读 · 0 评论 -
Unity3D自己编写Scroll View
介绍:在做UI的时候,会遇到滑动的组件,固定一个方框中显示内容。UGUI和NGUI中都有scroll view组件,可以很放便使用。但有时候不是想要的功能。了解底层实现,才能做出自己想要的功能,下面就写一个简单的scroll view组成:显示区域 内容区域 内容 滑块步骤:Canvas下创建一个空物体,添加脚本<MyScrollView>。调整好大...原创 2018-09-10 19:02:13 · 2511 阅读 · 1 评论 -
Unity3D无限滚动脚本
效果:原理:复制一份组件,放到本体后面,设置endpos为滚动的长度,当滚动到endpos位置,就复位。脚本:MyFlowusing System.Collections;using System.Collections.Generic;using UnityEngine;public class MyFlow : MonoBehaviour{ [Hea...原创 2018-09-11 10:18:43 · 1625 阅读 · 0 评论 -
Unity3D,通过音频名字播放声音
播放声音只需调用这个类的方法: using System.Collections;using System.Collections.Generic;using UnityEngine;public class AudioManager : MonoBehaviour { private static AudioManager _instance; public ...原创 2017-12-05 21:43:40 · 924 阅读 · 0 评论 -
Unity3D,场景转换和退出游戏
Scnen切换: 1.添加:using UnityEngine.SceneManagement; 2.调用:SceneManager.LoadScene(vlaue,LoadSceneMode.Single); value 可以是场景名字,加“”,也可以是数字(Build&Setting里排序)。第二个参数可省略。 ...原创 2017-11-27 11:07:01 · 47077 阅读 · 0 评论 -
Unity3D:RayCast碰撞检测
函数介绍:static bool RayCast ( Vector3 orgin , Vector3 direction , out RayCastHit hitInfo , float distnace=Mathf.Infinity , int layerMask=DefaultRaycastLayers ) ;第一个参数为射线碰撞检测的原点;第二个参数为射线检测的方向矢量;第三个参数为out类...原创 2018-06-09 10:49:19 · 12374 阅读 · 0 评论 -
Unity3D:实例化物体
1.实例化函数Instantite( gameObject , transform.position , transform.rotation ) ;在position位置,朝着rotation方向,生成一个gameObject(Clone);例子:发射子弹,游戏逻辑,在Update()函数里添加代码:void Update(){ float fireCD=0.5f;//发射时间间隔 floa...原创 2018-06-08 17:51:35 · 7939 阅读 · 0 评论 -
Unity3D:角色控制
1.键盘控制角色前后左右移动不转向,通过物体刚体组件物理特效Velocity控制,在FixedUpdate()函数里添加代码:void FixedUpdate(){ float moveHorizontal=Input.GetAxis("Horizontal");//得到水平方向输入 float moveVertical=Input.GetAxis("Vertical");//得到垂直方向输入...原创 2018-06-08 18:01:23 · 1541 阅读 · 0 评论 -
Unity小地图制作
小地图制作 1.首先创建一个Camera,方向向下,设置为正交,用来显示小地图。2.再在Project中创建一个Render Texture,赋给Camera。Render Texture便实时显示Camera的图像。3.创建一个UI_Raw Img,把Render Texture赋给它,设置好位置(右上角)。4.在Camera下创建一个Quad用来显示角色图标。5.可以直接把小地图Camera原创 2018-04-08 16:32:35 · 511 阅读 · 0 评论 -
3DDarkWonder
Terrain(地形) Unity自带各种资源包。 Brush Size 设置笔刷大小,Opacity 设置精度大小,越小越不容易改变地形,适合细微操作。 Height 设置地面高度,只有有一定高度,地面才可以忘下陷。按住Shift。 第三个按钮是平滑操作,消除尖锐部分。 第四个按钮添加地形的贴图材质Textures。 第五个按钮绘画树木,需要添加树木的Prefab。 第六个添...原创 2018-04-08 12:55:26 · 351 阅读 · 0 评论 -
2D跑酷(无限地图)
1.背景制作(背景动,角色不动)public float ground_speed=2f;public GameObjiect [ ] grounds;void Update(){ Vector2 v=transform.localPosition; v.x-=ground_speed*Time.deltaTime; if(v.x<...原创 2018-04-02 10:52:11 · 1733 阅读 · 0 评论