![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity3D
Unique_849997563
我不太愿意麻烦别人,但我又想不懂就问,所以很矛盾!
展开
-
Unity2021.3.19.f1 创建工程报错
可能是因为安装Unity时弹出360,将某些需要下载的文件阻挡了。查看未报错电脑安装的manifest比较没有发现异常;新安装的Unity在创建工程、打开老工程时报错,网上找了一圈,没有找到关于Unity的解决方案;重装Unity一切正常。原创 2023-09-06 22:27:53 · 878 阅读 · 0 评论 -
【UGUI基础】Toggle Group组件
如果Toggle Group组件Allow Switch Off为false,而所有Toggle组件isOn属性为false,运行代码后再获取Toggle组件设置第一个Toggle的isOn属性为true时,不会执行onValueChanged监听的事件。当为false时,如果Group下所有Toggle的isOn同时为false,则将第一个Toggle的isOn设置为true。Group:做单选时需要添加Toggle Group组件,多个Toggle组件只有一个的isOn属性能被设置为true。原创 2023-07-25 15:08:30 · 458 阅读 · 0 评论 -
【Unity组件扩展】减少Image的渲染
需要实现透明遮罩功能,如点击任意关闭界面、透明遮挡不让点击等,一般可以添加Image组件,然后将alpha值设置为0。不过,在Unity2018.4.3.6f1及之前的老版本中,这样的做法会增加DC和增加overdraw。但是在2021.3.19f1中,已经优化这个问题,将Image的alpha值设置为0后,不会增加DC和overdraw。可以继承Graphic重写OnPopulateMesh方法来减少这个方面的性能消耗。原创 2023-07-25 11:20:34 · 324 阅读 · 0 评论 -
接入穿山甲SDK时,Unity打Android包报错日志
SDK工程设置为Enable,项目工程设置为Disable。2、将unitypackage导入包名为:com.DefaultCompany.Myproject的另一个工程,打包报错。3、点击工程默认弹出Enable Android Auto-resolution 设置选项,点击Enable。1、新建一个空工程,设置包名为:com.ceshi.hewen,正常打包无报错,导出unitypackage。2、点击Reset to Defaults 重置参数,再点击ok关闭设置窗口。原创 2023-03-21 16:42:06 · 3055 阅读 · 0 评论 -
【对象池】未判断两个对象是否相同引起的问题
最近处理了一个几个版本之前遗留的问题,代码是一个离职的同事写的,测试发现了这个问题,但是不能稳定重现,所以一直没有修改。最近有玩家反馈过来,重现几率比较大,于是用玩家的号重现这个问题。现象:战斗时会偶发性的缺少一些数据。具体表现是进战斗时有六个武将,但是显示出来会缺少一些武将。经过多次调试,发现进战斗数据没有问题,只是显示出现了问题,显示的地方是取View代码里面的数据,并未修改。代码逻辑:1、先从对象池查看是否有空闲View,有就取出来使用,没有就新创建,将使用的对象放到队列里面保存下来,原创 2022-05-23 17:58:57 · 199 阅读 · 0 评论 -
Unity打字机效果扩展使支持富文本
前段时间策划在打字机的文本中配置了富文本,修改某些文字的颜色,但是公司原有的代码只有基础的打字机效果,不支持富文本,代码逻辑就是将文本转换位字符数组,然后再Update中根据间隔拼接字符串显示文本。基本打字机主要代码逻辑:if (_isPlaying) { _timer += Time.deltaTime; if (_timer >= Interval) {原创 2022-03-23 20:44:00 · 3834 阅读 · 0 评论 -
【Unity编辑器扩展实践】、扩展Hierarchy菜单
原创 2022-03-08 21:08:09 · 4511 阅读 · 0 评论 -
Unity中运行的模型突然从场景中消失
现象:Unity运行中的模型突然从Game场景消失,Hierarchy双击选中这个模型,Game场景中又会显示出该模型。项目中新增了两个模型,开场动画时,模型是从高处跳下。模型循环播放到第二次是,莫名其妙的突然凭空消失。想看看模型在什么位置,结果选中又会显示出来,而且不会消失。查看了摄像机渲染都没有问题,百思不得其解。在网上搜了一下,发现也有人遇到这个问题。Unity3d奇怪的坑——有动画的模型在场景中突然不显示于是修改模型上Animation的CullingType试了一下,果然是这个问题原创 2022-01-26 17:42:31 · 10658 阅读 · 3 评论 -
关于Animation参数missing的坑
前段时间游戏遇到一个真机闪退问题,没有打印,没有加载报错,找问题来真是头大。渠道:PPTV问题:模型预制体上一个Animation组件中 clip丢失。现象:加载资源闪退。猜想:我们项目是依赖打包,该预制体单独打包为A,它依赖的所有clip打成一个包B。加载预制体A时,发现它有依赖关系的动画片段未加载,会去加载B包,但B包里面没有该动画片段。没有报错是因为A包和依赖包B确实加载成功。疑问:只有一个渠道才会闪退,其他平台都能正常运行,会不会是PPTV的SDK处理加载导致崩溃。今天在加载原创 2022-01-24 17:52:33 · 3472 阅读 · 0 评论 -
【Unity编辑器扩展实践】、基于模板创建Lua脚本
当前项目使用C#开发版本,IOS使用Xlua热更代码。每次创建Xlua文件的时候,都是复制之前的Lua文件修改文件名、类名,模板内容基本一致,觉得有一点麻烦。以前写过一篇文章:修改Unity、VS2015创建C#脚本时使用的模板,就想仿照着Unity创建C#脚本时的方法写一个创建Lua脚本的编辑器扩展。首先根据需求,创建一个Txt模板:100-Lua Script-NewLua.lua.txt...原创 2021-07-30 15:29:58 · 852 阅读 · 5 评论 -
【实战案例】Unity从零开始开发初级案例 - 找你妹
一、前言前段时间和对象完《找你妹》这个小游戏,难分高低,顺便想了一下实现原理,按照自己的思路仿一个游戏出来,熟悉整个开发流程,整理基本的知识点,总结一下经验。二、实现思路初始化到界面里的每个图片(Item)都是一个数据(Data),有着对应的一个或者多个类型。界面上方提示的是当前需要选择的类型,玩家点击Item时,如果Data里面有对应的类型,则满足条件。三、实现细节1、初始化数据读取配置表里面的配置,content size fitter原创 2021-03-27 16:46:57 · 774 阅读 · 0 评论 -
【Unity编辑器扩展实践】、使用CopyTo迁移Unity中的资源
一般情况下,项目开发中都会有多个版本,我们项目是一个Int开发版本,一个Patch补丁版本,一个Release开放版本。刚完成开发阶段,将资源对比到Patch后,又在Int上修改的东西,也需要及时对比到Patch上,如果东西多,一般使用Beyond Compare进行比较,而如果修改东西较少,通常是在文件夹中打开当前资源路径,复制当前资源,修改当前文件夹路径,复制到对应路径。使用CopyTo迁移Unity中的资源。 private static Object[] objs; [Men原创 2021-03-25 17:38:01 · 964 阅读 · 0 评论 -
Unity修改Shader使UI支持Mask功能
当UI界面上有很多UI元素,在固定区域内显示不完全时,我们通常会添加UGUI自带的Scroll View或者,自己添加ScrollRect,然后添加Mask,使内容可滑动,辅助实现该功能。但当UI元素里面有特效的时候,我们就会发现特效会穿透Mask不显示的区域,造成特效穿透。这时候你可以修改Mask组件,添加MaskPlus代码,将UI上的Mask替换成MaskPlus!using UnityEngine;using UnityEngine.UI;public class MaskPlu原创 2020-10-21 14:35:16 · 2910 阅读 · 2 评论 -
Unity3D各平台路径(包括手机内置存储路径、SD卡等等)
转载请注明出处! 关于Unity3D在各平台上的路径问题,网上有好多的资料,如下是比较好的参考资料:1、http://www.manew.com/thread-23491-1-1.html2、http://www.xuanyusong.com/archives/2656 这里我不详细解释和路径的用法,只把各个路径对应的位置和访问方式总结一下。1、Resources路径 Resources文件夹是Unity里自动识别的一种文件夹,可在Unity编辑器的Project窗口里创...转载 2020-09-17 15:56:31 · 1485 阅读 · 0 评论 -
UGUI:调整Unity中UI和特效的层级关系(特效穿透问题)
特效放在两张图片中间原创 2020-06-01 16:31:06 · 11249 阅读 · 0 评论 -
设置Canvas的 overrideSorting不生效
设置Canvas的 overrideSorting不生效原创 2020-05-22 15:54:05 · 2138 阅读 · 0 评论 -
Unity加载设置:Application.backgroundLoadingPriority
最近有个朋友做加载优化,偶然听到他提起Application.backgroundLoadingPriority ,就顺便看了一下!Application.backgroundLoadingPriority:这是Application类的一个个静态属性,可以控制后台加载线程的优先级,从而控制异步加载资源所需的时间,以及后台加载时对游戏性能的影响。适用API:加载对象(Resou...原创 2020-03-18 21:42:54 · 1948 阅读 · 0 评论 -
UGUI强制刷新Layout(布局)组件
不久前接到策划的一个需求,做一个自动适配的显示:不固定文本+不固定按钮+不固定文字,类似于:对于这种需求,首先想到的就是在父物体上添加HorizontalLayoutGroup组件自动管理子物体的布局,在子物体上添加ContentSizeFitter组件通过内容适配文本的大小!但代码写出来,文本之间会有重叠,观察发现只要改变父物体或者其中一个子物体的enable,重叠的文本就会显示正常...原创 2020-03-11 15:08:38 · 3979 阅读 · 0 评论 -
【Unity编辑器扩展实践】、查找所有引用该图片的预制体
上一篇Unity编辑器扩展实践二、通过代码查找所有预制中已经查到到所有的预制体了。然后我们就可以用这些预制体做一些其他的操作了,比如查找该预制的资源引用。可以直接遍历预制,找到预制里面的所有Image组件,然后比较Sprite属性的值,看是否和检测的资源相同。Prefabs.Clear(); if (m_sprite == null) return; E...原创 2019-12-30 21:32:50 · 1548 阅读 · 0 评论 -
【Unity编辑器扩展实践】、通过代码查找所有预制
在Unity中对编辑器的扩展,通常都会操作文件的增删改查,这里介绍两种Unity中查找预制的方法,其他文件同理。1、利用AssetDatabase查找预制:通过AssetDatabase的FindAssets方法可以查找到所有文件的guid,参数filter是过滤字符。就是Unity中Project窗口下搜索栏右边两个按钮弹出来的东西,t标识是Type,l标识是lable。(如"Prefa...原创 2019-12-30 21:30:04 · 3372 阅读 · 0 评论 -
【Unity编辑器扩展基础】、GUI
一、静态属性1、颜色改变背景颜色:GUI.backgroundColor改变内容颜色:GUI.contentColor改变内容改变内容和背景颜色:GUI.color //改变背景颜色 GUI.backgroundColor = Color.yellow; GUI.Button(new Rect(0, 0, 200, 30),...原创 2019-12-12 16:51:31 · 1866 阅读 · 0 评论 -
【Unity编辑器扩展基础】、GUILayout
小结:1、TextArea、TextField等文本输入框不能复制,TextArea可以换行,可以自适应宽。2、参数可以传GUIContent的都可以显示图片或文字。3、GUILayout.Window需要调用BeginWindows、EndWindows才能显示窗口。using System.Collections;using System.Collections.Gen...原创 2019-11-22 16:30:56 · 3541 阅读 · 0 评论 -
【Unity编辑器扩展基础】、EditorGUILayout (三)
小结:1、画下拉框的方法有DropdownButton、EnumMaskField、EnumPopup、IntPopup、Popup、EnumMaskPopup、MaskField,DropdownButton比较麻烦,EnumMaskField、EnumMaskPopup、MaskField可以多选。2、画Slider的都没什么区别,只是MinMaxSlider是取值范围。usin...原创 2019-11-22 00:11:25 · 3974 阅读 · 1 评论 -
【Unity编辑器扩展基础】、EditorGUILayout(二)
小结:1、类似BeginFadeGroup、BeginHorizontal布局函数都有与之对应的EndFadeGroup、EndHorizontal,他们是一一对应的;2、创建ToggleGroup,关闭之后该ToggleGroup下的内容都不能在该组下面修改。3、BeginScrollView返回值是该滑动区域的位置,需要将它存下来,才能改变BeginScrollView的位置。...原创 2019-11-21 00:12:36 · 4779 阅读 · 0 评论 -
【Unity编辑器扩展基础】、EditorGUILayout (一)
小结:1、EditorGUILayout的各种Field和GUILayout的类似,但是EditorGUILayout可以复制粘贴;2、因为OnGUI是每帧执行的,EditorGUILayout中类似TextField、IntSlider、ColorField需要传一个值,返回修改值的,需要将返回值赋值给临时变量;3、params GUILayoutOption[] options可以...原创 2019-11-21 00:03:58 · 4721 阅读 · 0 评论 -
【Unity编辑器扩展实践】、利用txt模板动态生成UI代码
在使用Unity3D开发过程中,随着工作时间的推移,你肯定会发现写的代码,就只有那几个模板。比如控制UI的View代码,你会发现格式都是一样的,添加引用、UI变量声明、Awake中给UI变量赋值、添加Button事件、Destroy中注销事件。可以说都可以通过一个模板写出来。这里就介绍一个我用C#写的一个利用txt模板来生成代码的工具,如果有不太好的地方,还请谅解。之前我写了一个模板生成的代码...原创 2019-11-14 21:32:17 · 791 阅读 · 0 评论 -
UGUI使用小技巧(六)Unity实现字符串竖行显示
最近遇到一个问题,策划需求,文字像古书那样,从右到左,竖行显示。以前一直以为UGUI的Text可以满足这个需求,我以为可以设置某个属性,就将现在横排显示的文本变成竖行,做个东西的时候没有找到原生的解决方案,然后在网上简单的扒了一圈,发现有两种解决方法。第一种是,将设置到Text组件的文本行转列其余的用空格显示。第二种是重写Text组将的一些函数,具体怎么弄的没看明白。然后这两种方法...原创 2019-11-02 16:44:38 · 4800 阅读 · 0 评论 -
Unity中的 GUILayout.TextField实现复制粘贴功能
前一段时间,在项目中使用他们写的窗口工具的时候,发现有的TextField虽然可以选择,但是不能复制粘贴,然后有同事就去找了解决方案,用一个方法把选择的内容复制粘贴到剪切板上,代码如下: public static string HandleCopyPaste(int controlID) { if (controlID == GUIUtility.keybo...原创 2019-10-16 20:33:21 · 2219 阅读 · 2 评论 -
UGUI使用小技巧(五) Scroll Rect组件的使用
在功能开发中,由于可能需要显示很多数据,但是一个界面显示不下,经常都会遇到需要滑动的列表,如背包,排行榜等,这些地方基本都会用到Unity3D的Scroll Rect组件来实现滑动功能。除此之外,Scroll Rect还有一些小技巧,可以用来滑动文字,图片,达到一些别的功能。一、基本用法经常使用到的组件:Scroll Rect、Mask、GridLayoutGroup首先Unity的H...原创 2019-10-28 20:47:56 · 4653 阅读 · 0 评论 -
Unity3D几个点击屏幕获执行相关操作的方法
Unity3D中,当鼠标点击屏幕执行相关操作的方法主要有以下几种,这里通过获取鼠标位置来比较,主要有Update,OnMouseDown函数中执行,添加或者重写EvenTrigger等方法。一、通过Update使用Input.GetMouseButtonDownpublic class UpdateFunc : MonoBehaviour { void Update() ...原创 2018-03-01 12:57:05 · 5513 阅读 · 0 评论 -
Unity里几个让你相见恨晚的小技巧
# 1如果编辑器意外崩溃了,但场景未保存,这时可以打开工程目录,找到/Temp/_Backupscenes/文件夹,可以看到有后缀名为.backup的文件,将该文件的后缀名改为.unity拖拽到项目视图,即可还原编辑器崩溃前的场景。# 2所有数值类型的字段,都支持在检视面板中直接输入简单的数值表达式。 # 3好不容易才调好的坐标,结果发现是在运行模式下,如果退出运行模式就还原了怎么办?可以在检视面...转载 2018-03-07 12:36:08 · 1185 阅读 · 0 评论 -
Unity中Transform.SetParent第二个参数的使用
发现这个问题,纯属巧合,之前的项目中老是有一个问题,就是动态加载UI预制后,还要手动修改UI的Transform,一直有一个疑问。后来无意中发现项目中为了取消勾选Raycast Target使用了这个方法(Unity3D研究院之UGUI一个优化效率小技巧),我也发现挺好的,并没有发现他们之间有什么联系。 最近又想理清楚Canvas的Render Mode三个模式,突然发现Screen原创 2018-02-07 10:45:36 · 3614 阅读 · 0 评论 -
Unity打包成exe可执行文件
参考原文地址http://blog.csdn.net/avi9111/article/details/72355163可能由于版本原因,跟原文有点不一样的地方是:解压后运行这个路径不在常规里面,而是在设置里面!注意压缩成rar文件的时候,在exe这个文件夹之前不要增加多余的文件夹,否则找不到可执行文件!转载 2018-02-05 14:51:20 · 6472 阅读 · 0 评论 -
Unity编辑器的扩展,MenuItem的使用整理
本来是想学习一下ScriptableObject的,看到例子上边有CreateAssetMenu,就想到自己经常搞忘MenuItem的用法,所以整理一下!CreateAssetMenu主要是应用在类上。添加CreateAssetMenu后,在Project面板中右键,默认就会在Create菜单下,测试了一下,这个属性是创建.asset文件用的,如果类继承MonoBehaviour或者不继承...原创 2018-01-19 15:32:06 · 3097 阅读 · 0 评论 -
Unity成功导出Xcode工程后自动修改一些设置
最近用Unity接ios的sdk,用Unity导出Xcode工程后,由于刚刚开始,每次都是手动设置。后来看了Unity3D研究院之IOS全自动编辑framework、plist、oc代码(六十七)和Unity-导出Xcode工程时的自动配置之后,用XUPorter试了一下,还是感觉不方便。看了Unity iOS一键打包之淘汰 XUPorter之后,决定学习一下Unity自带的API。[原创 2018-01-09 10:07:31 · 7537 阅读 · 0 评论 -
Unity工程通过eclipse生成APK
Unity工程打包,可以直接在File->Build setting->Build得到APK,还有一种方法是,通过Unity导出android工程,在eclipse或者android studio中导出APK。android studio不熟悉,这里介绍一下通过eclipse导出APK。 这里的BuildSystem有三个选项,Internal这个选项就是直接打出APK, Gradle是导原创 2018-01-31 20:34:23 · 1225 阅读 · 0 评论 -
Unity中C#和Java的相互调用
1、通过C#调用Java的方法: 在C#中添加调用的一些代码,利用Unity提供的一些接口实现调用Java! private const string JAVA_CLASS_Name = "com.unity3d.player.UnityPlayer"; private void CallJavaFunc(string javaFuncName, params object原创 2018-01-30 22:18:54 · 5909 阅读 · 1 评论 -
Unity 贴图格式及压缩后的图片像素的一些比较
一、Unity支持的贴图格式1、png 是无损压缩 占用内存小 支持透明2、jpg 是有损压缩 占用内存小 不支持透明3、tga 是无损压缩 占用内存大 支持透明4、dds 是无损压缩 占用内存最小 支持透明 但dds不支持IOS二、图片压缩后的像素比较PC端DXT1: jpg 占用内存小(RGB)D原创 2018-01-30 19:35:55 · 4000 阅读 · 0 评论 -
unity接ios的sdk的一些坑
其实我是做unity的,没有接触过IOS,第一次接ISO的sdk,难免遇到很多操作问题。下面分享一些还记得的解决方法的错误!接sdk之前看了一下菜鸟教程的OC !感觉只是皮毛。坑1(lib找不到):错误ld: library not found for -liPhone-libclang: error: linker command failed with exit cod原创 2018-01-04 20:46:34 · 4288 阅读 · 1 评论 -
unity游戏android平台获取粘贴板的文本,实现复制粘贴功能
我的做法:首先将复制和粘贴功能在java中写好,导出jar包,再由Unity去调用。package com.firefly.utils;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ClipData;import android.content.Cli原创 2017-07-04 19:29:36 · 1448 阅读 · 0 评论