
Unity
文章平均质量分 62
Hunter_2020
这个作者很懒,什么都没留下…
展开
-
世界坐标转屏幕坐标
UI层的物体能跟随3D世界的物体。血条,聊天气泡,物体小提示。世界坐标转屏幕坐标,在update里更新。原创 2023-11-03 17:18:43 · 394 阅读 · 0 评论 -
创建正六边形地形块 - 平面
正六边形,内角120度,中心点到每个顶点的距离都一样,是边长。显示创建变长为1的正六边形,创建出来后的地形近似为正方形。原创 2023-11-03 17:11:54 · 457 阅读 · 0 评论 -
unity面试八股文 - 常用工具与算法
首先,你需要定义一个地图或者格网。这个地图上标记出起始点、目标点以及所有不能通过(例如墙壁或障碍物)的区域。原创 2023-10-24 15:57:08 · 1870 阅读 · 2 评论 -
unity面试八股文 - 框架设计与资源管理
AssetBundle:AssetBundle 是 Unity3D 的一种资源打包方式,可以将场景、模型、贴图、材质、Shader 等各种类型的资源进行打包,并在运行时动态加载。:在Unity编辑器中,选择“Window > Photon Unity Networking > Highlight Server Settings”,在Inspector窗口中输入你的应用ID(从Photon网站获取)。你可以将游戏中的各种资源打包成AssetBundle,然后在运行时动态加载。原创 2023-10-16 18:15:08 · 1597 阅读 · 0 评论 -
动态加载sprite是multiple模式(即该sprite包含了很多小图)里的小图
但是如果这个sprite是multiple模式(即该sprite包含了很多小图),那么上述代码就不能满足需求了。在Unity中,你可以通过Texture2D的EncodeToPNG()函数将Sprite或Texture2D保存为PNG图片。首先,你需要把你想要加载的资源放在一个名为"Resources"的文件夹内。以上代码会遍历sprites数组中的每个sprite,并将每个sprite保存为.png格式的图像文件。如果要加载Sprite下的multiple模式的图片,你需要知道这些图片的路径。原创 2023-10-16 16:52:25 · 2207 阅读 · 0 评论 -
unity面试八股文 - 基础篇
如果你需要更多控制和复杂的渲染选项(如颜色渐变, 填充, 遮罩等), 使用 Image. 如果你只是想简单地展示一个纹理并且不需要额外功能, 或者你正在处理不能转换为 Sprite 的纹理类型(例如WebCamTexture或RenderTexture)时,那么选择 Raw Image.原创 2023-10-12 15:15:49 · 3167 阅读 · 0 评论 -
ScriptableObject上的prefab内容暂用,ScriptableObject详解
ScriptableObject是Unity引擎中的一种特殊类型,它允许你创建可扩展的、自定义的数据容器,用于在项目中存储和管理数据。它们非常适合存储那些不直接关联场景对象的数据,例如配置数据、游戏设置、AI行为树、技能和物品属性等。原创 2023-05-05 16:50:02 · 887 阅读 · 0 评论 -
[unity] 枚举实现为可多选的序列化属性
在Unity中,如果需要将枚举实现为可多选的序列化属性,可以使用System.Flags特性。在上面的代码中,myEnumValue字段使用EnumMaskField函数来绘制一个可多选的枚举属性面板。原创 2023-03-07 11:47:10 · 672 阅读 · 0 评论 -
[C#] 多线程单例子,分为阻塞型和分阻塞型, 在unity里的应用
在单例中使用多线程时,需要注意以下几点:线程安全:在多线程环境下,单例对象可能被多个线程同时访问,因此需要确保单例的线程安全,避免出现数据竞争等问题。对象创建:如果在单例对象的构造函数中启动了新的线程,那么可能会在单例对象还没有完全创建完成时就开始执行线程。因此,在创建单例对象时需要考虑到线程的启动时机,可以使用懒汉式的延迟加载方式,在需要使用单例对象时再进行初始化。生命周期管理:如果在单例对象中启动了线程,那么需要考虑线程的生命周期管理,避免线程一直运行导致资源泄漏等问题。原创 2023-03-03 18:07:45 · 954 阅读 · 0 评论 -
[游戏架构] 有限状态机的实际应用
有限状态机(Finite State Machine,简称FSM)是一种常用的计算机科学中的建模工具,用于描述由离散状态和状态之间的转换组成的系统。它主要由一个有限的状态集合、一个初始状态、一个输入事件集合、状态之间的转换以及与每个状态相关联的输出动作组成。原创 2023-03-03 11:59:10 · 1256 阅读 · 0 评论 -
[unity] 游戏内的红点系统
在游戏中,通常需要给玩家提示一些未完成的任务或者活动,这些提示以红点的形式展示,被称为红点系统。红点系统可以帮助玩家了解当前有哪些任务或者活动需要完成,从而提高玩家的参与度和粘性。原创 2023-03-02 17:07:17 · 1819 阅读 · 0 评论 -
[架构设计] Entity-Component-System (ECS)架构
Entity-Component-System (ECS)架构:这是一种基于数据的架构,将游戏对象(Entity)表示为一组组件(Component)的集合,将游戏逻辑实现为系统(System),系统会根据组件的状态进行处理。这种架构具有高效、可扩展等优点,被广泛应用于游戏引擎中,例如Unity的DOTS框架。原创 2023-03-01 11:34:33 · 2221 阅读 · 0 评论 -
[框架设计] MVVM 的介绍,应用及优缺点
在MVVM中,View是完全独立于Model的,ViewModel则是连接View和Model的桥梁。View通过ViewModel访问Model中的数据和方法,ViewModel则将Model中的数据和方法转换为View中可用的形式。ViewModel还可以控制View的显示逻辑和用户交互,以使View更加易于维护和扩展原创 2023-02-28 11:04:20 · 2612 阅读 · 0 评论 -
[架构模型]MVC模型详细介绍,并应用到unity中
MVC模式是一种软件架构模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。MVC模式的目标是实现应用程序的松耦合,以便在应用程序的不同部分进行更改时,不会影响到其它部分的代码。原创 2023-02-26 16:29:58 · 1169 阅读 · 0 评论 -
unity热更新新方案,ILRuntime
ILRuntime 是一个独立的、跨平台的 .NET Runtime,可用于在 Unity 中实现热更功能。使用 ILRuntime,您可以在游戏运行时加载和执行 C# 脚本,而不需要重新编译整个项目。原创 2023-02-25 20:03:30 · 1209 阅读 · 0 评论 -
[unity] async-awit的函数,怎么才能关闭这个函数呢,现在来解析
在上面的示例中,我们使用UnityWebRequest启动了一个异步请求,并使用isDone属性来检查异步操作是否已完成。在上面的示例中,我们在调用MyAsyncFunction函数后等待了一段时间,并在此之后使用Task对象的Cancel属性来取消异步操作。在上面的示例中,我们在MyAsyncFunction函数中使用了while循环来执行异步操作,并在满足某些条件时终止循环。Unity还提供了其他的异步API,如AsyncOperation和Task,您可以根据您的需要选择适合的方法来取消异步操作。原创 2023-02-24 11:31:48 · 1841 阅读 · 0 评论 -
[unity] 音频的二进制流转化为audioclip的两种方式
2、将返回的btye[]数组,使用filestream,先保存为mp3文件,然后,再用www类,读取本地文件,获取www,audioclip,在赋给audiosource,进行音频播放。audioSource.clip.SetData()方法,将音频数据赋给audiosource,实现语音播放;但这种只有wav很有可以直接用mp3需要第三方库,我没有试过。原创 2023-02-22 12:47:01 · 3660 阅读 · 0 评论 -
[unity] Enable Full StackTraces 的方法,打开泄漏检查的全堆栈显示
如果 unity 老是报错: A Native Collection has not been disposed, resulting in a memory leak. Enable Full StackTraces。原创 2023-02-22 10:26:29 · 3429 阅读 · 0 评论 -
使用addressable管理游戏资源
addressable 资源管理原创 2022-05-08 20:48:44 · 1033 阅读 · 0 评论 -
【unity】读取Excel 文件
需要把这两个文件加入plguin 文件夹下, Excel.dll 和ICSharpCode.SharpZipLib,官方链接 http://exceldatareader.codeplex.com/读取文件public class ExcelLoader { public static DataRowCollection ReadExcel(string path, string sheetName) { FileStream stre原创 2021-05-24 17:11:16 · 165 阅读 · 0 评论 -
[unity] [tool] 删除失效脚本
以前使用 prop.DeleteArrayElementAtIndex(j);但是现在unity 不允许这么操作,会报错It is not allowed to modify the data property因为unity自己提供了一个更方便的接口GameObjectUtility.RemoveMonoBehavioursWithMissingScript原创 2020-12-17 16:37:32 · 955 阅读 · 0 评论 -
[unity][Tool] 代码批量替换 playsetting里的 icon
节假日icon都会发生变化,但是每次手动拖就很麻烦,所以只要icon名字是一样的,只是在不同的文件夹下,就可以批量修改,一键搞定 private void SetPlatformIcon() { PlatformIconKind[] kinds = PlayerSettings.GetSupportedIconKindsForPlatform(BuildTargetGroup.iOS); for (int i = 0; i < kinds原创 2020-12-17 09:47:13 · 427 阅读 · 0 评论 -
[Unity] [UI] Layout Group
强制刷新 layout group运行时对layout group 大小进行设置,比如做一些动画,但是layout group没有刷新,导致位置错乱。所以需要强制刷新unity3D强制刷新Layout Group的方法://rectTransform为挂有Layout Group组件的RectTransform。LayoutRebuilder.ForceRebuildLayoutImmediate(rectTransform);多层layout group 与 content size f.原创 2020-12-15 10:48:20 · 2475 阅读 · 1 评论 -
[Unity] Vector Graphics -使用 SVG矢量图
[2.0.0-preview.13] Vector Graphicsunity 支持 使用 SVG 矢量图,使用sprite的格式,UI 使用 SVGImage原创 2020-09-29 17:31:54 · 7376 阅读 · 2 评论 -
[Unity] UGUI 中获取点击的物体
点击物体,打印名字 if (Input.GetMouseButtonDown(0)) { PointerEventData eventData = new PointerEventData(EventSystem.current); eventData.position = new Vector2(Input.mousePosition.x, Input.mousePosition.y);原创 2020-08-26 17:09:59 · 1673 阅读 · 0 评论 -
[unity]自带的录音功能Microphone 在iOS 和 android设置上使用 及 注意事项
获取录音设备, 返回值是设备名string[] mDevice = Microphone.devices;开始录音// 如果 _deviceName = null; 会选默认的录音输入口// _micSecond 为录音时常,最大不超过3600秒 //_frequency 采样率一般为44100,一定要大于0// 返回一个 audioClipCurAudioSource.clip = Microphone.Start(_deviceName, false, _micSecond, _.原创 2020-07-18 11:58:32 · 2561 阅读 · 2 评论 -
[Unity]多摄像机和UI的结合的问题
如果用UGUI 已经用了camera,在用其他camera是无法显示UI的,不过是的layer设置成什么。只要是UI组建的内容就无法显示。原创 2020-07-18 11:27:00 · 1233 阅读 · 0 评论 -
[Unit] 加载本地音频文件在 ios 和 android 设备上
如果出现这个报错Errror:“Cannot connect to destination host.”说明你的文件路径没有添加 "file://" private IEnumerator LoadAudio(string filepath) { filepath = "file://" + filepath; using (var uwr = UnityWebRequestMultimedia.GetAudioClip(fil原创 2020-07-09 14:21:55 · 1732 阅读 · 0 评论 -
[Unity] AssetDatabase 的应用和介绍
AssetDatabase 是对资源的管理,可以创建,查找,删除,等常用功能,一般在工具类里用的比较多,比如批量修改配置表参数,动态创建配置,查找指定文件等等这里有几个常常用到:创建文件:AssetDatabase.CreateAsset创建文件夹AssetDatabase.CreateFolder删除文件AssetDatabase.DeleteAsset获取文件相对于Assets所在目录的相对位置AssetDatabase.GetAssetPath加载文件:AssetDatabase原创 2020-07-07 10:28:36 · 2804 阅读 · 0 评论 -
[Unity] 判断设备是手机还是平板
iPhone,可以根据设备名字判断是否包含 iphoneandroid,可以比较设备分辨率的比例 是否大于4:3 public static bool IsPhone() { bool isPhone = true;#if UNITY_IPHONE && !UNITY_EDITOR string deviceInfo = SystemInfo.deviceModel.ToString(); isPhone = deviceInfo.Contains("iPhon原创 2020-07-05 18:00:47 · 1776 阅读 · 2 评论 -
[Unity] 判断是否 时phone X 系列
判断iphone 是否是 phone X 系列,及有刘海的iphone public static bool IsiPhoneX() {#if UNITY_IOS return UnityEngine.iOS.Device.generation.Equals(UnityEngine.iOS.DeviceGeneration.iPhoneX) || UnityEngine.iOS.Device.generation.Equals(UnityEngine.iOS.DeviceGenerat原创 2020-07-05 17:57:24 · 370 阅读 · 0 评论 -
[unity] 动态改变应用的横屏和竖屏状态
代码直接设置 Screen.orientation 的值即可竖屏: Screen.orientation = ScreenOrientation.Portrait;横屏:Screen.orientation = ScreenOrientation.Landscape;但是如果是跳转网页或者打开网页,需要先打开网页在设置横竖,不然可能是设置失败或者页面大小不到。最好等一帧是否需要自动旋转横屏或者竖屏的方向// 可以自动旋转为竖屏或者横屏 Screen.autorotateToPortrai原创 2020-07-05 17:52:23 · 2273 阅读 · 1 评论 -
[Unity] 找到选中文件节点下的所有文件
把editor的序列化模式改成文本: EditorSettings.serializationMode = SerializationMode.ForceText;添加工具借口在菜单 :[MenuItem(“Assets/ChooseObject”)]读取选中的文件 :Selection.activeObject获得文件的路径 :AssetDatabase.GetAssetPath获得文件下的所有子文件的路径: Directory.GetFiles(path, “*.prefab”, SearchO原创 2020-06-29 16:39:16 · 1214 阅读 · 0 评论 -
[Unity] 动态合并和拆分 mesh 和 贴图
当场景中有很多不同的模型和贴图时,会导致Batch 会很高,所以我们可以去合并这些小物件模型和贴图,已达到省资源的目的。首先在记录每一个需要被动态合并的物的material,mesh, texture,uv 等信息 public void CollectSmallObject(SmallObject mSmallobject) { ObjectData data = default(ObjectData); data.objId = mSmallobject.objId原创 2020-06-26 14:45:37 · 4394 阅读 · 0 评论 -
[Unity] 优化包体大小的细节----prefab之间的引用关系
如果prefab A里用到的资源B也是个prefab,那A的size就会比较小,因为A并没有把B真的包含,只是存了一个引用,如果B不是个prefab,或者把prefab unpack, 那A的size就会变大, 因为B用到的资源会复制到A中,如图A引用BprefabA 把B这个prefab unpack之后...原创 2020-06-22 11:37:31 · 1459 阅读 · 0 评论 -
[Unity] Monobehaviour 默认函数的执行顺序
官方地址原创 2020-06-21 16:07:10 · 427 阅读 · 0 评论 -
[Unity] Input 在Android 和 iOS 上可能会用到的各种开关和效果
Android 虚拟返回键 private void Update() { if (Input.GetKeyUp(KeyCode.Escape)) { // do something } }多指触控开关UnityEngine.Input.multiTouchEnabled鼠标或者是单击的的屏幕坐标UnityEngine.Input.mousePosition陀螺仪开关SystemInfo.supportsGyroscope在安卓上是否支持返回键.原创 2020-06-19 19:52:52 · 909 阅读 · 0 评论 -
[Dotween] 介绍与使用,和坑
Dotween 是在unity里实现各种动画效果,比如位移,选择,缩放,颜色改变, 延时调用等等。原创 2020-06-18 23:20:26 · 1591 阅读 · 0 评论 -
[dotween] ease 动画效果
记录一个DoTween的缓动动画曲线与效果网址:http://robertpenner.com/easing/easing_demo.html缓动动画速查表网址:http://www.xuanfengge.com/easeing/easeing/转载 2020-06-17 13:36:30 · 1289 阅读 · 0 评论 -
[unity] Sprite atlas 图集的坑
原始小图不能放在Resource 文件夹下,不然小图也会打进包里,图片资源会变成原来的两倍。用image 组件而不是Raw image, 不然原始小图不会用认作为使用了图集功能原创 2020-06-03 10:50:24 · 2084 阅读 · 0 评论