
Unity开发笔记
文章平均质量分 61
Unity开发经验
Kerven_HKW
认真写好每一行代码
展开
-
TheUltimateGuidetoProfiling_Flowchart
2022_TheUltimateGuidetoProfiling_Flowchart原创 2024-10-10 09:46:52 · 116 阅读 · 0 评论 -
C#入门:简单数据类型和强制类型转换
(长整型,占 8 字节, 表示 64 位有符号整数,范围大约 -(10 的 19) 次方 到 10 的 19 次方)(整型,占 4 字节,表示 32 位整数,范围 -2,147,483,648 到 2,147,483,647)(无符号整型,占 4 字节,表示 32 位无符号整数,范围 0 ~ 4,294,967,295)(无符号短整型,占 2 字节,表示 16 位无符号整数,范围 0 ~ 65,535)(短整型,占 2 字节,表示 16 位整数,范围 -32,768 ~ 32,767)原创 2024-03-02 18:03:01 · 969 阅读 · 0 评论 -
Unity 游戏设计模式:单例模式
全局访问点:单例模式确保只有一个类的实例存在,并提供一个全局的访问点,这样在整个游戏中的任何地方都可以访问该实例。在 C# 游戏设计中,单例模式是一种常见的设计模式,它的主要目的是确保一个类只有一个实例,并提供一个全局访问点。总的来说,单例模式在游戏设计中提供了一种有效的方式来管理全局状态和共享资源,使得代码更容易维护和扩展。上面的属性访问器不是线程安全的,因为没加锁,下面的是线程安全的,但也就仅是创建时安全。比如使用了类的静态成员,但是静态成员又和实例对象无关,然后就创建了实例对象浪费资源。原创 2024-03-02 17:31:04 · 814 阅读 · 0 评论 -
Unity 游戏设计模式:观察者模式
上面的代码的表示是这些相关系统在观察玩家是否死亡,一旦死亡,就会触发注册的事件,跟在玩家死亡后面执行。在 unity 游戏设计中,观察者模式(Observer Pattern)有着重要的作用,它主要用于实现对象之间的一对多的依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都得到通知并自动更新。通过观察者模式,可以实现游戏中对象之间的松耦合关系,提高代码的可维护性和扩展性。如果需要添加新的观察者或改变观察者的行为,可以做到不影响主题的实现,从而降低了代码的复杂性。一个代码里耦合了多个系统。原创 2024-03-02 15:02:46 · 845 阅读 · 0 评论 -
Unity中C#的 == 和 Equals 的区别是什么
在示例代码中,我们重写了 Person 类的 Equals 方法,并在 GetHashCode() 方法中使用了 HashCode.Combine() 方法来生成哈希码。重写 GetHashCode() 方法的目的是让两个相等的对象具有相同的哈希码,以确保它们能够被正确地放置在哈希表中的同一个桶中,并在需要时能够高效地进行查找和比较操作。如果我们自定义一个类,并且没有重写 Equals 方法,那么该类的对象在使用 Equals 方法进行比较时,默认情况下会比较它们的引用,而不是内容。原创 2024-03-01 16:14:17 · 1339 阅读 · 0 评论 -
Unity 游戏设计模式:工厂模式
抽象工厂模式是工厂方法模式的加强版,抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对一个产品对应一个工厂类,而抽象工厂模式面对多个产品对应一个工厂类,一个工厂角色可以负责多个不同产品等级结构中的产品对象的创建。单工厂模式将对象的创建过程放在一个单独的工厂类中,使得客户端代码不直接依赖于具体的类实现。这相当于是把原本会随着业务扩展而庞大的简单工厂类,拆分成了一个个的具体产品工厂类,这样代码就不会都耦合在同一个类里。如果需要添加新的游戏元素或功能,只需要修改工厂类,而不需要修改客户端代码。原创 2024-02-29 21:31:58 · 784 阅读 · 0 评论 -
Unity生命周期函数解析
本文由转码, 原文地址。原创 2024-02-29 15:26:05 · 780 阅读 · 0 评论 -
C# 中的装箱(boxing)和拆箱(unboxing)
在 C# 中,装箱(boxing)和拆箱(unboxing)是用来在值类型(如 int、double 等)和引用类型(如 object)之间进行转换的过程。需要注意的是,装箱和拆箱会引入一定的性能开销,因为它们涉及到数据类型的转换和内存的重新分配。装箱是指将值类型转换为引用类型的过程。当将值类型的数据赋值给一个 object 类型的变量时,就会发生装箱操作。当从 object 类型的变量中取出值类型的数据时,就会发生拆箱操作。// 发生拆箱,将引用类型转换为值类型。// 发生装箱,将值类型转换为引用类型。原创 2024-02-27 11:35:34 · 642 阅读 · 0 评论 -
Unity GC
本文由转码, 原文地址。原创 2024-02-06 09:18:56 · 1322 阅读 · 0 评论 -
在Unity中如何设置设备的高、中、低配
在开发游戏或应用程序时,考虑到不同设备的性能差异是至关重要的。Unity作为一种流行的游戏开发引擎,提供了一些方法来区分设备的高、中、低配,并相应地调整游戏的性能要求和图形质量。原创 2023-10-24 20:15:12 · 1573 阅读 · 0 评论 -
Unity加速编译小技巧
所以,我们自然会考虑到,将这个文件进行分拆,将不经常修改的代码放到一个单独的地方,从而减少不必要的文件编译。这个比较常见的使用情况,一个Editor所使用的dll会依赖相应的Runtime dll。然而,这个语法糖不是免费的。在我们编译到IL2CPP之后,我们会发现,这类模板函数会根据参数的不同排列组合,展开为一个个独立的函数。当我们有大量的模板展开之后,必然会使我们的代码文件快速膨胀,从而增加IL2CPP最终的编译速度。所以,大家在使用模板的时候,一定要留心其参数的排列组合数量,控制好整体的代码大小。原创 2023-05-12 19:42:45 · 569 阅读 · 0 评论 -
Unity控制台输出消息的委托
<记录性文章>Application.logMessageReceived += Log;using UnityEngine;using System.Collections;using LuaInterface;using System;using System.IO;//展示searchpath 使用,require 与 dofile 区别public class ScriptsFromFile : MonoBehaviour { LuaState lua .原创 2021-08-22 16:26:28 · 1150 阅读 · 0 评论 -
用UE4蓝图制作FPS_零基础学虚幻4第二季
课时1:案例演示 05:12 课时2:工程准备 07:35 (把一个项目从一个工程移动到另一个工程) 1.新建一个空白工程,不包含初学者内容 2.选择我们要复制的工程,按右键,如下图: 复制到新工程的content文件夹 课时3:蓝图类 08:07 课时4:蓝图类的编译和保存 05:44 课时5:开始游戏 08:14 课时6:动画蓝图 07:47 课...原创 2018-03-08 21:30:00 · 1126 阅读 · 0 评论 -
虚幻4快速上手实战系列 之 三维弹球
Geometry--画刷在一个cube中使用减法创建一个盒子添加一个碰撞体V+左键--生成节点1+左键--生成常量节点End键--让物体快速落到平面上Ctrl+W--复制Add Impulse--增加一个力这是蓝图:射线部分:起点与终点之间的向量...原创 2017-12-26 15:24:00 · 1288 阅读 · 0 评论 -
unity编辑器拓展
Editor下的脚本资源都不会打包。优先级相隔11就有有中线分割,每一个菜单栏的priority优先级默认为1000=>扩展在脚本上点击右键执行修改脚本属性的方法[MenuItem("CONTEXT/PlayerHealth/InitHealthAndSpeed")]// CONTEXT 组件名 按钮名 static void InitHealthAndSpeed(Men...原创 2019-09-01 13:00:55 · 1118 阅读 · 0 评论 -
ue4虚幻学习
空项目、一闪而过的解决方法命名空间std::cout的作用:int ,long , long long类型的范围unsigned int 0~4294967295int 2147483648~2147483647unsigned long 0~4294967295long 2147483648~2147483647long long的最大值:9...原创 2017-12-26 15:25:00 · 1073 阅读 · 0 评论 -
Unity针对高低端机型的优化
不过,通过一些简单的规则将高低端机型区分开来会有很大问题,例如,有些山寨机内存很大,CPU却很烂,安卓版本很高,但内存却很小,所以我们希望有一个综合考虑硬件的系数,可以为每个硬件给出一个评分,最后将CPU型号、内存大小、系统版本号、屏幕分辨率大小、GPU型号这几个硬件的评分综合起来,得出一个总分,用这个分数来判断是高端机、中端机抑或是低端机,这样会比较合理一些。为了让市场上不同机型的设备都能流畅地运行游戏,我们需要区别对待,比如,在高端机型中使用画质好的画面,而在低端机型中使用差一点的画质。原创 2022-10-24 09:32:56 · 5139 阅读 · 0 评论 -
Assembly definitions 的相关实验
大概从 Unity 2017.3 开始,添加了 assembly definition 相关的功能。为了更深入的了解,进行了多次打包和对比。本文主要是对这一过程进行记录。原创 2022-10-10 20:28:45 · 2243 阅读 · 0 评论 -
Unity加速编译小技巧
在Unity开发过程中,我们会经常修改脚本代码。而每次修改脚本代码之后,Unity都需要重新编译脚本。这个过程在一些大型项目里面,是比较消耗时间的。那么有没有什么方法可以加快这个过程呢?我们需要知道,在每次返回到Editor的时候,Unity都编译了哪些东西。Unity工程中所有生成的编译文件都会放到Library\ScriptAssemblies这个文件夹中。比如大家熟悉的Assembly-CSharp.dll。这个dll就是我们日常写的脚本最终的归宿。...原创 2022-07-28 14:10:52 · 4702 阅读 · 0 评论 -
0.专栏首页
1.Unity经验:移动游戏常见的分辨率2.Unity经验:随文字个数变化的聊天气泡3.Unity经验:三维物体的拖拽和移动4.Unity经验:Unity3d中查找一个脚本被挂在哪些预设上面5.Unity经验:AssetBundle打包6.Unity经验:Unity2019程序化动画绑定(Animation Rigging系统)7.Unity经验:Unity编辑器拓展参考代码8.Unity经验:TimeLine 制作过场动画9.Unity经验:Unity缓存本地......原创 2021-06-11 19:28:40 · 1395 阅读 · 2 评论 -
2.Unity经验:随文字个数变化的聊天气泡
1.效果图2.代码using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class BubbleTextCtl : MonoBehaviour{ private InputField inputField...原创 2019-12-09 10:42:48 · 1765 阅读 · 0 评论 -
3.Unity经验:三维物体的拖拽和移动
Dragusing System.Collections;using System.Collections.Generic;using UnityEngine;public class Drag : MonoBehaviour { private Transform _trans;// 目标物体的空间变换组件 private Vector3 _vec3TargetS...原创 2018-01-23 11:58:00 · 2914 阅读 · 0 评论 -
4.Unity经验:Unity3d中查找一个脚本被挂在哪些预设上面
用一个脚本函数可以获取到选择的脚本文件被哪些预设和场景引用[MenuItem("Assets/Tool/GetReference")] static void GetReference() { string target = ""; if (Selection.activeObject != null) target = Ass...原创 2018-01-18 22:47:00 · 2135 阅读 · 0 评论 -
5.Unity经验:AssetBundle打包
为热更新打基础(xlua\tolua)素材、源码链接:http://www.sikiedu.com/course/74/task/1812/show一、AssetBundle的定义和作用1,AssetBundle是一个压缩包包含模型、贴图、预制体、声音、甚至整个场景,可以在游戏运行的时候被加载;2,AssetBundle自身保存着互相的依赖关系;3,压缩包可以使用LZMA和LZ...原创 2017-12-26 15:27:00 · 1368 阅读 · 0 评论 -
6.Unity经验:Unity2019程序化动画绑定(Animation Rigging系统)
前言:Unity的Animation Rigging系统不但可以使用程序修改动画,还可以利用各种IK控制器在Unity里面录制动画,可谓是动画开发的一个巨大福音!2019.1才发布的一个新功能,可以让开发这在动画骨架上设置由程序控制的运行时动画。该技术通过一组预定义的动画约束来控制角色动画,从而让我们在游戏中实现一些传统动画很难完成的功能,比如与世界的互动,骨骼变形,以及物理的次级运动。基于Unity Animation Job这样一个多线程。一、目录1.技术简介2.基本组件介绍3.原创 2020-05-12 11:36:51 · 6780 阅读 · 1 评论 -
7.Unity经验:Unity编辑器拓展参考代码
Unity编辑器拓展参考代码:具有一些参考价值的代码,如果读者需要详细信息,就到官方文档:https://docs.unity3d.com/Manual/30_search.html?q=MenuItem原创 2020-05-16 11:06:52 · 1458 阅读 · 0 评论 -
8.Unity经验:TimeLine 制作过场动画
这一篇不想写了,直接拿别人的吧:https://www.jianshu.com/p/9a57906913c0我的工程路径:E:\Study\UnityProjects\UnityTeachTimeLine原创 2020-05-16 16:29:49 · 1734 阅读 · 0 评论 -
10.Unity打安卓开发者包进行性能调试
欠一篇博客:原创 2020-07-14 11:24:56 · 1481 阅读 · 0 评论 -
11.在Unity URP中使用UI相机
摘自:《游戏瞎折腾手记》https://zhuanlan.zhihu.com/p/157310749在Unity中制作UI时,我们通常习惯于单独使用一个Camera来拍摄UI内容。场景相机UI相机最终画面这种制作方式有不少优点,比如避免了主场景相机的后处理效果可能会干涉UI内容等问题。然而在Unity新出的URP(通用渲染管线)中,这一制作方法却有点问题。在相当长的一段时间内,LWRP/URP是无法像以前的内置渲染管线一样叠加Camera的。而后来,总算是可以了,但.原创 2020-07-15 19:35:00 · 5840 阅读 · 0 评论 -
14.Unity获取手机电量、时间、信号、显示网络延迟ping
Unity获取手机电量、时间、信号:using System;using System.Collections;using UnityEngine;using UnityEngine.UI;public class GetSystemInfo : MonoBehaviour{ private Image batteryLevelImg, charging; private Text batteryTxt, timeTxt, networkInfoTxt, delayTxt;原创 2021-03-24 21:32:24 · 4113 阅读 · 1 评论 -
Unity内截屏实现
Unity内一般有三种截屏的方法:Application.CaptureScreenshotTexture2D.ReadPixelsRenderTextures图片保存地址一般设为: Application.persistentDataPath + “/screen1.png”参考persistentDataPath的文档说明:The value is a directory path where data expected to be kept between runs can .原创 2020-10-24 10:47:42 · 3429 阅读 · 0 评论 -
PokemonGo-LBS AR项目实战
基于Unity2017.3.1 本课程将带领大家制作AR上架游戏中最火的PokemonGO,侧重于快速简单的实现LBS基于地理的GPS定位技术、AR捕捉功能。会从整体设计、LBS插件讲解、坐标计算、AR环境搭建、动画控制、脚本编写、代码优化、美术设计等进行全流程讲解。以安卓发布为例,IOS制作过程一致。并将思路与详细制作过程分开,适合不同基础的学员学习。制作中使用的Unity...原创 2019-09-01 13:01:23 · 8206 阅读 · 5 评论 -
EasyTouch5
总结:这里面的一些功能,就可以拿来做移动或者PC的很多功能了,这是一个很有用的插件。禁用0618错误EasyTouch4_x的写法:using HedgehogTeam.EasyTouch;using System.Collections;using System.Collections.Generic;using UnityEngine;/// <...原创 2017-12-26 15:30:00 · 1189 阅读 · 0 评论 -
Unity实现二维码的生成和识别
1.二维码常见的生成与识别途径1.草料二维码 https://cli.im/text2.在软件中实现生成和扫描二维码 使用zxing实现zxing是一个用java写的开源项目,zxing.net是移植到.net工程上的。https://github.com/micjahn/ZXing.Net2.实现二维码的识别1.Unity工程2.让RawImage显示摄...原创 2018-03-17 00:48:00 · 1958 阅读 · 0 评论 -
Unity3D热更新-Tolua/topameng的框架
下载tolua https://github.com/topameng/tolua将内容放到当前工程里。在Tolua下面的Examples里面有20多个例子。很容易看。c#调用lua还好。方便练习。这里说下lua调用unityAPI。首先 如果Lua要调用到unity的内容,就需要先将unity的内容注册到lua中,(我觉得要用到tolua的应该都会或者了解c和lua交互过程。 要是不...原创 2018-08-13 16:54:40 · 3479 阅读 · 0 评论 -
音游制作插件Koreographer-第0篇 简介
1.什么是音乐游戏? 在音乐游戏(Music Game)中,玩家配合音乐与节奏做出动作(依画面指示按钮、踏舞步、操作模仿乐器的控制器等)来进行游戏。通常玩家做出的动作与节奏吻合即可增加得分,相反情况下则会扣分,部分作品甚至会因为失误过多而强制结束游戏(Game Over)。此外某些游戏会要求一定的得分,若无法达成则会结束游戏。这类游戏主要考的是玩家对节奏的把握,以及手指的反应和眼力。完成一首...原创 2019-05-15 14:49:00 · 3866 阅读 · 0 评论 -
热更新四部曲
热更新第一季《Assetbundle》AssetBundle使用流程(简称AB)1,指定资源的AssetBundle属性 (xxxa/xxx)这里xxxa会生成目录,名字为xxx2,构建AssetBundle包(在Editor文件夹里面)利用AssetBundle进行简单的打包using System.IO;using UnityEditor;public class...原创 2019-09-01 12:55:03 · 1562 阅读 · 0 评论 -
Unity滚动滑页的C#代码
using UnityEngine;using System.Collections.Generic;using UnityEngine.EventSystems;using UnityEngine.UI;using System;public class ScrollPage : MonoBehaviour, IBeginDragHandler, IEndDragHandler{...原创 2019-09-01 12:56:45 · 1414 阅读 · 0 评论 -
Unity插件之DoTween案例分析
案例分析01.BasicsCode:using UnityEngine;using System.Collections;using DG.Tweening;public class Basics : MonoBehaviour{ public Transform redCube, greenCube, blueCube, purpleCube; IEnume...原创 2019-09-01 12:59:52 · 1836 阅读 · 0 评论 -
shader学习
问:shader是什么?答:shader中文名叫着色器,是一段能够针对3D对象进行操作、并被GPU所执行的程序。通过这些程序,程序员就能获得绝大部分想要的3D图形效果总结:通过GPU和电脑沟通怎么画的一种语言。GPU的渲染流程==>>计算机中的三维模型计算机中的三维模型本质上是一组数据,包括空间中顶点的位置、法线方向、顶点颜色等等GPU就是通过包括三维模型在...原创 2019-09-02 09:32:53 · 1288 阅读 · 0 评论