自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 Unity游戏开发避免内存泄漏的规避方案

对于通过 Resources.Load 加载的资源,使用 Resources.UnloadAsset 或 Resources.UnloadUnusedAssets 来释放。使用 Addressable Assets 管理和加载资源,可以更好地控制资源的加载和卸载,减少内存泄漏的风险。对于频繁创建和销毁的对象,使用对象池可以减少内存分配和垃圾回收的开销,同时也有助于避免内存泄漏。静态变量的生命周期贯穿整个应用,如果静态变量引用了较大的对象且未正确管理,可能导致内存泄漏。使用异步加载减少主线程阻塞。

2024-07-11 11:17:10 249 1

原创 Unity手机移动端崩溃错误处理办法

通过上述方法和步骤,可以有效地处理和解决 Unity 手机移动端的崩溃问题。关键是捕获和分析崩溃日志,找到崩溃的根本原因,并采取相应的解决措施。同时,使用第三方工具如 Bugly 和 Firebase Crashlytics 可以帮助更好地管理和分析崩溃信息,提高应用的稳定性。在分析崩溃日志时,可能会发现某个函数在特定条件下访问了一个空的对象引用,导致了崩溃。Bugly 是一个常用的崩溃分析工具,可以帮助捕获和分析移动应用的崩溃信息。捕获到崩溃日志后,需要分析日志以确定崩溃的原因。插件冲突可能会导致崩溃。

2024-07-11 10:55:42 277

原创 Unity减少包体大小(优化方案)

如果项目中有大量高分辨率的图片资源,但在某些场景中并不需要如此高的清晰度,可以将这些图片的分辨率适当降低,并调整压缩参数以减小文件大小。又比如,对于一些复杂的模型,如果在特定场景中只需要展示其大致形状,可以通过减少顶点数量和简化材质来降低模型的复杂度和文件大小。压缩打包:使用适当的压缩工具(如 ProGuard 和 IL2CPP)压缩代码和资源。同时,定期对项目进行资源和代码的审查,以发现并清理不再使用的资源和代码,也能有效地控制包体大小。资源动态加载:只在需要时加载特定的资源,而不是一开始就全部加载。

2024-07-11 10:52:51 353

原创 UGUI竖排输入

另外,还有一种方式是通过自定义脚本重写 Text 的相关功能来实现竖排显示,但这种方法相对复杂,需要对 UGUI 的源码有一定了解。如果你对代码实现不太熟悉,也可以考虑使用一些第三方的 UGUI 扩展插件,这些插件可能提供了更便捷的方式来实现竖排文本功能。循环该数组,实例化 item,并将 char 数组里的值设置到 item 的 Text 组件中,一个 item 设置一个值(如果文本中有换行,需要计算空格添加到数组或列表中);方法中,将文本转换为字符数组,通过循环实例化预制体并设置每个字符。

2024-07-11 10:42:53 109

原创 UGUI框架事件机制

负责处理玩家的各种输入,如键盘输入、鼠标输入、触屏输入等。处理过程是重写父类的 process 函数,内部会进行射线检测(以光标所在的屏幕坐标为起点向 UI 投一条射线,检查射线所穿过的所有 UI 控件,并提取其中第一个照射到的控件),以及检查鼠标按键状态(如左键、中键、右键),处理鼠标按下、移动(进入或离开某个控件)、拖拽等操作。:原理是以点击或触摸的位置发射一条射线,然后收集所有被射线穿透的对象,并返回最可能的目标(比如最接近屏幕的对象),供事件系统使用。:相当于事件系统的管理器,负责协调各个模块。

2024-07-11 10:37:56 314

原创 Unity Minimap原理 实现 以及优化方案

另外,Mipmap 是一种纹理映射技术,它与迷你地图本身的实现原理并无直接关系,但在处理纹理时可能会用到。通过预先创建不同分辨率的纹理图像(即 Mipmap 层级),当物体距离较远时,可以使用较低分辨率的 Mipmap 纹理,从而提高渲染效率和图像质量。在 Unity 中,已经对纹理的 Mipmap 处理进行了封装,通常不需要开发者手动处理每个纹理的 Mipmap 创建过程。迷你地图的基本原理是使用一个额外的摄像机来从上方俯视场景,并将其渲染到一个小的显示区域(通常是 UI 中的一个小窗口)。

2024-07-11 10:28:26 231 1

原创 解决Unity增量打包时,没变化的资源也被重新打包问题

第二次打包前,重置并拉取最新的 assetbundle + manifest + library,这样只有资源发生变化的 assetbundle 包才会被重新打包,上线后再上传 assetbundle + manifest + library。修改预处理环节的逻辑,若资源无修改则直接拷贝库里文件,对于 meta 文件,无论是否重新生成,都要复用以避免 guid 不一致的问题。同时,还可以检查是否存在其他可能影响增量打包的因素,例如项目中是否使用了特定的插件或脚本,这些也有可能干扰到打包的过程。

2024-07-11 10:20:27 187

原创 Unity检查图片是否被预制体或其他对象引用(静态和动态监测)

在 Unity 中,如果你需要动态检查某个图片(或其他资源)是否被预制体或其他对象引用,可以使用脚本遍历项目中的所有预制体和场景对象。,选择要检查的图片所在的文件夹,脚本就会自动检查并输出结果。方法执行具体的检查操作:首先获取图片文件夹下的所有。中没有对应预制体路径的图片)和被使用过的图片(即在。最后,通过打印日志的方式输出未被使用的图片(即在。然后遍历预制体文件夹下的所有。中存在,就记录该纹理对应的预制体路径。表示要检查的图片所在的文件夹路径。表示预制体所在的文件夹路径,中有对应预制体路径的图片)。

2024-07-11 10:17:00 81

原创 unity开发命令规范

当然,具体的命名规范可能因项目的需求和团队的习惯而有所不同,但尽量保持一致性是很重要的。它分为小驼峰命名法(lowerCamelCase)和大驼峰命名法(UpperCamelCase)。:使用帕斯卡命名法,即每个单词的首字母大写,类名应该是名词或名词短语,尽可能使用完整的词。后缀,对大多数枚举类型使用单数名称,但对作为位域的枚举类型使用复数名称,并总是将。小驼峰命名法:第一个单词以小写字母开始,后续单词的首字母大写。:使用帕斯卡命名法,少用缩写,不要在枚举类型名称上使用。开头,后面使用帕斯卡命名法。

2024-07-11 09:16:54 230

原创 PureMVC与MVC框架

一、定义:全名“Model View Controller” 模型_视图_控制器 的缩写,一种软件的典范,将逻辑数据界面分离的代码组织方法。二、PureMVC Core Scripts // 核心文件View.cs : IView.cs Controller.cs : IController.cs 3.Model.cs :IModel.cs三、PureMVC优缺点:- 1.利用中介者,代理者,命令实现解耦,使得Model、View、Controller之间耦合性降低,提升了部.

2022-02-11 20:26:00 526

翻译 状态机和状态模式(游戏设计模式)

一、目的:游戏开发过程中,解决对象复杂的状态切换二、实现方式:1.用枚举配合switch case语句。2.用多态与虚函数(即状态模式)三、状态模式定义:允许对象在当内部状态改变时改变其行为,就好像此对象改变了自己的类一样。四、状态模式解释:状态模式用来解决当控制一个对象状态转换的条件表达式过于复杂的情况,它把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。五、状态模式的实现分为三个要点:1.为状态定义一个接口。2.为每个状态定义一个类。3.恰当地

2022-02-10 20:38:01 281

原创 linker command failed with exit code 1 (use -v to see invocation)

1.      将出现错误的.m文件,加入到build phases 中的compile sources中2.      删除出错的静态库,重新导入

2017-09-29 15:40:23 337

原创 untiy接GooldSdk

报错全文如下:[2013-06-19 16:59:01 - Dex Loader] Unable toexecute dex: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;

2017-09-29 15:39:50 206

原创 打包苹果入坑手册

1. Unity错误——1.error CS1704: An assembly with the same name `UnityEngine.UI'has already been imported.解决办法:关闭当前工程; 删除工程所在目录的Library文件夹 重启工程,Unity讲重新写入相关Library,即可解决问题。2.   wzh.nmPowerAssemb

2017-09-29 15:35:20 942

转载 HOTween简单应用

1 基本插值说明:HOTween 只能对物体的任何非静态共有属性或者字段做插值TweenParms.Prop(propName,endValue) 设定被插值的属性和最后的值(可以多次调用指定多个被插值的属性)TweenParms.Ease(easeType) 指定渐变类型,这里使用Linear表示线性渐变HOTween.To(object,time,params) To表示从

2017-09-28 09:26:43 288

转载 排序算法--面试总结分析

面试时最常问的就是排序算法,所以总结一下这个过程中我遇到的问题:叙述**排序算法思想,然后写代码;最常问的是快排;各个排序的时间复杂度,一般情况下都说的是平均。首先还是会问快排,​nlogn,然后问同样复杂度的排序算法,合并排序、堆排序、shell排序。(刚开始的时候一直特别害怕复杂度,因为感觉自己不清楚,面试过程中突然感觉,只要进行了折半,复杂度就是nlogn。所以知道各个排

2017-09-28 09:25:03 214

转载 稳定排序和不稳定排序

这几天笔试了好几次了,连续碰到一个关于常见排序算法稳定性判别的问题,往往还是多选,对于我以及和我一样拿不准的同学可不是一个能轻易下结论的题目,当然如果你笔试之前已经记住了数据结构书上哪些是稳定的,哪些不是稳定的,做起来应该可以轻松搞定。本文是针对老是记不住这个或者想真正明白到底为什么是稳定或者不稳定的人准备的。      首先,排序算法的稳定性大家应该都知道,通俗地讲就是能保证排序前2个相等的

2017-09-28 09:24:26 139

转载 [Unity框架]PureMVC基础

PureMVC框架下载:http://puremvc.github.io/而github上的有很多都是不需要的,所以也可以直接下载简化版的(c#):http://pan.baidu.com/s/1bcYgfc官方文档:http://puremvc.org/component/option,com_wrapper/Itemid,183/核心层(单例):

2017-09-28 09:23:42 213

转载 untiy与java数据交互

最近做一个项目,为同事提供接口,能使他在Unity中调用Android中的函数来实现QQ登陆并获取用户信息。按照一些书上和一些贴吧的东西弄了几天,有时候逻辑虽然都走通了,但是有时候还是会出一些问题,现在就将出现的一些问题做一个总结。1、开发工具Unity3d eclipse,虽然android目前的开发已经普遍使用android studio但是这里建议你使用eclipse2、言归正传,首

2017-09-28 09:23:00 812

转载 unity3d调用Android的java代码实现地图的连接

1  打开eclipse 点击window 点击preference,点击Android 设置SDK的位置2  导入安卓工程(从unity导出来的工程),或者自己新建一个安卓工程(如何导入从unity导出来的工程File->New->Android->Android Project from Existing Code ->Root  Directory ->Browse) 2.1在工

2017-09-28 09:18:44 636

转载 欧拉角与万向节死锁

首先来看一下什么是欧拉角(Euler angles)?构件在三维空间中的有限转动,可依次用三个相对转角表示,即进动角、章动角和自旋角,这三个转角统称为欧拉角。——引自百度百科莱昂哈德·欧拉用欧拉角来描述刚体在三维欧几里得空间的取向。对于任何一个参考系,一个刚体的取向,是依照顺序,从这参考系,做三个欧拉角的旋转而设定的。所以,刚体的取向可以用三个基本旋转矩阵来决定。换句话说,任何关于刚体旋转

2017-09-28 09:17:49 273

转载 Unity AssetBundle爬坑手记

转自:http://www.cnblogs.com/ybgame/p/3973177.html这篇文章从AssetBundle的打包,使用,管理以及内存占用各个方面进行了比较全面的分析,对AssetBundle使用过程中的一些坑进行填补指引以及喷! AssetBundle是Unity推荐的资源管理方式,官方列举了诸如热更新,压缩,灵活等等优点,但AssetBundle的坑是非常深的

2017-09-28 09:17:12 182

转载 Unity如何查看当前内存使用情况

【经验】使用Profiler工具分析内存占用情况  Unity3D为我们提供了一个强大的性能分析工具Profiler。今天我们就使用Profiler来详细分析一下官方例子AngryBots的内存使用信息数据。       首先打开Profiler选择Memory选项,在游戏运行的某一帧查看Detailed选项数据(Simple模式的数据很直观,可以知道内存大体被哪部分占用了,网上也

2017-09-27 09:05:44 16696 1

转载 Unity 如何减少DrawCall

阅读目录前言:看看优化需要从哪里着手?CPU的方面的优化:GPU的优化内存的优化回到目录前言:刚开始写这篇文章的时候选了一个很土的题目。。。《Unity3D优化全解析》。因为这是一篇临时起意才写的文章,而且陈述的都是既有的事实,因而给自己“文(dou)学(bi)”加工留下的余地就少了很多。但又觉得这块是不得不提的一个地方,平时见到很多人对此处也给予了忽略了事,需

2017-09-27 09:05:16 2377 2

转载 UGUI

UGUI的核心元素: Anchor(锚点):每个控件都有一个Anchor属性,控件的4个顶点,分别与Anchor的4个点保持不变的距离,不受屏幕分辨率变化的影响。                      系统默认设置控件的Anchor位置在其父物体的中心处,且不能离开父物体的范围。                      将Anchor设置在父物体的左侧,可以实现左对齐的效果。

2017-09-27 09:04:44 351

转载 Howteen使用方法

Hotween与itween类似,也是一个插值插件,都是对位移,缩放,旋转,颜色等数值进行插值,各有各的优势。如果做一般常见的动画建议使用Hotween,但是遗憾的是Hotween不支持路径动画编辑,如果支持就完美了,不过路径编辑自己稍微添加一点代码就可以实现也是非常简单的。官方网站:http://www.holoville.com/hotween/index.html根据Hotween官

2017-09-27 09:04:14 441

转载 ITween

iTween.MoveTo(): 让模型移动到一个位置,它的底层函数是通过动态的修改模型每一帧的transform.position完成的,所以它会百分之百到达目标点,不会出现误差。iTween.MoveFrom():它和上面的一样,iTween.MoveTo()是将模型移动到目标位置,而iTween.MoveFrom()是将模型从目标位置移动到原始位置。iTween.MoveAdd()

2017-09-27 09:03:41 283

转载 JSON与XML的区别比较

1.定义介绍(1).XML定义扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。 XML使用DTD(document type definition)文档类型定义来组织数据;格式统一,跨平台和语言,早已成为业界公认的标准。XML是标

2017-09-27 09:03:11 176

原创 线程服务的停止与启动

using System;using System.Collections.Generic;using System.Text;namespace Thread.Stop{    ///     /// 文件服务    ///     public class FileService    {        private volatile bool i

2017-09-27 09:02:39 314

转载 UGUI研究院之UI的深度学习

今天抽空研究了一下UGUI的深度,UGUI真是好的不得了。以前用NGUI的时候UI的深度就是一个指定的数值,数值越大越靠前,尤其在布复杂界面的时候,深度值不知道怎么填非常恶心。现在有了UGUI这问题即可迎刃而解呀~~如下图所示,B图片在A图片前面,在看看Hieraychy视图,因为A在B的上面,所以优先渲染A,然后是B。那么B就在A的上面了。。 那么我现在想让A图在B图的上面,那么直接

2017-09-27 09:02:01 257

转载 PlayerMaker插件

我看过两个月的 PlayMaker,也尝试用来写一个项目。优点不多说了,可视化编程,状态机控制等。就说一下缺点:缺乏对数据操作的直接支持。数组,List,Dictionary 操作等等,稍微复杂一点的数据存取,PlayMaker 根本应付不过来。缺乏对枚举的支持。官方的教程里建议用 string 来代替枚举,我就呵呵了。一般来讲一个游戏项目里光枚举enum 就得要十几个。你说完

2017-09-27 09:01:30 4757

转载 NGUI 3.5教程(二)Label 标签 (Hello world)、多行文本

写在前面:        本文将创建NGUI的第一个例子。按照编程传统,第一个例子,就是做一个Hello world 显示出来。NGUI,我们用Label来实现 。    欢迎大家纠错、拍砖!原创很辛苦,如有转载,请注明出处:http://blog.csdn.NET/chenggong2dm/article/details/25494537Lab

2017-09-26 09:03:52 240

转载 NGUI Sprite(精灵的使用)

NGUI Sprite的各种Type(Simple、Sliced、Tiled、Filed、Advanced)2014-11-24 16:56 2723人阅读 评论(0)收藏 举报 分类:NGUI(3) 目录(?)[+]官方文档:http://www.tasharen.com/forum/index.p

2017-09-26 09:01:59 500

转载 String,StringBuffer与StringBuilder的区别

String 字符串常量StringBuffer 字符串变量(线程安全)StringBuilder 字符串变量(非线程安全) 简要的说, String 类型和 StringBuffer 类型的主要性能区别其实在于 String 是不可变的对象, 因此在每次对 String 类型进行改变的时候其实都等同于生成了一个新的 String 对象,然后将指针指向新的 String 对象,所以经常

2017-09-26 09:00:55 116

转载 Unity3D协程介绍 以及 使用

l 在程序中调用StopCoroutine()方法只能终止以字符串形式启动(开始)的协程;l 多个协程可以同时运行,它们会根据各自的启动顺序来更新;l 协程可以嵌套任意多层(在这个例子中我们只嵌套了一层);l 如果你想让多个脚本访问一个协程,那么你可以定义静态的协程;l 协程不是多线程(尽管它们看上去是这样的),它们运行在同一线程中,跟普通的脚本一样;l 如果你的程序需要进行大量的计算,那么可以考

2017-09-26 09:00:18 194

原创 Android与unity交互

error:Error building Player: CommandInvokationFailure: Failed to re-package resources. See the Console for details.E:\android SDK\android-sdk-windows\build-tools\24.0.0-preview\aapt.exe package --

2017-09-26 08:59:37 726

转载 Unity3d设计模式之单例模式

单例模式我相信是所有设计模式之中运用最广泛的设计模式之一。 今天我们就来看看在unity中如何使用单例模式,在unity中,我们分两种单例,一种是继承monobehavior的单例,一种是普通单例。 1.MonoBehavior单例其实在unity中,如果脚本是继承monobehavior,那么使用起单例来更加简单。 只需要在Awake()里面,添加一句instance

2017-09-26 08:59:06 199

转载 unity通过android adb查看真机日志

前几天跑某大公司面试,问我会不会在android真机调试的时候直接输出到控制台,当时有点懵逼,居然不知道控制台是什么东西了,居然理解成了输出到eclipse...我觉得程序没有通过eclipse打包,怎么可能输出到它里面去呢...等面试完了,回公司的路上才回过神来,那个黑框框不就是控制台么!!!adb是androidSDK的一个工具,位置就在sdk目录下的platform-tools文

2017-09-26 08:58:25 1270

转载 Android 调试之 Log和LogCat的详解

(1)为什么使用Log而不使用System.out我相信很多的Java新手都非常喜欢使用System.out.println()方法来打印日志,不知道你是不是也喜欢这么做。不过在真正的项目开发中,是极度不建议使用System.out.println()方法的!如果你在公司的项目中经常使用这个方法,就很有可能要挨骂了。为什么System.out.println()方法会这么遭大家唾弃

2017-09-26 08:57:26 300

原创 接腾讯语音SDK遇到的坑

1.开发坏境 搭建安装 jdk sdk adb 可参考 其他文章注意:不能直接将需要使用的Jar复制在libs   正确步骤:     1.file->Properties->Java Build Path -> Libraries->Add External JARs    ..添加jar      2.Order and Export  勾选需要使用的Jar2.包导

2017-09-26 08:56:43 1363

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除