![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Unity开发
沈夕林
Fear can be expelled with knowledge.
展开
-
地图数据各种格式总结
KMZ文件是压缩过的KML文件。在实际的生产应用中,倾斜摄影(或者别的格式的大批量模型)的格式并不是b3dm 格式的,绝大多数的倾斜摄影模型格式是 osgb,还有一部分是 obj,所以我们需要把它转化成 b3dm 格式的数据,才能进行进一步的操作。每一个模型的属性,例如ID能够将模型分离成单个的个体,同样也能对这些模型做更新,颜色变化,是否展示等这样的操作,模型的属性也会有所使用,举个例子来说,通过网络服务去访问元数据,通过建筑的id去访问它的地址,或者动态的属性决定模型外观,根据属性值来改变颜色高度。原创 2023-04-18 15:30:51 · 2596 阅读 · 1 评论 -
Unity在线展厅——加载AB包
【代码】Unity在线展厅——加载AB包。原创 2023-02-16 17:38:56 · 233 阅读 · 0 评论 -
Unity在线展厅——打包AB包
"Assets/自定义命令/生成AssetBundlesWindows64""Assets/自定义命令/生成AssetBundlesWebGL""Assets/自定义命令/清除AssetBundleName"原创 2023-02-16 17:37:58 · 186 阅读 · 0 评论 -
Unity在线展厅——动态加载贴图
1.创建一个模型根目录,然后把模型放到跟目录下,创建一个加载贴图的脚本链接到根目录上。3.把贴图名称设置成和模型名称一致,并且全局唯一,这样避免贴图加载出错。2.在每个需要动态加载贴图的模型上加载一个脚本。4.编写加载贴图代码。原创 2023-02-14 10:33:23 · 1015 阅读 · 0 评论 -
unity摄像机控制脚本
一、摄像机结构二、安卓端没有验证,不知道是否可用(完整包下载链接)三、代码using DG.Tweening;using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.EventSystems;/// <summary>/// 控制摄像机旋转移动/// </summary>public class CameraControl_Mo原创 2022-05-18 16:43:15 · 837 阅读 · 0 评论 -
unity 实现app内更新
本方法适合小包,会直接下载apk,然后覆盖安装,如果想系统的实现app热更新,还请使用目前流行的Lua等方法。一、Unity部分代码1.检测服务器是否有新版本IEnumerator IEDetectVersion() { localVersion = PlayerPrefs.GetFloat("appVersion", 0);//获取本地缓存的app版本 var vversionurl = "http://59.111.105.78:82/";原创 2022-05-07 16:03:01 · 908 阅读 · 0 评论 -
unity导入bim模型
最近在研究怎么导入bim模型,开始的时候真是一头雾水,毫无头绪,但是功夫不负有心人,终于找到了解决办法,总共找到了三种插件,其中两种是unity出品的,说明这个方向还是很有市场的,下面我就对这三种插件进行一下对比说明:名称Unity ReflectPixyzTridify导入方式用插件从Revit导出,在Unity中用Revit插件导入在Unity中直接用插件导入把模型上传到Tridify官网后,在Unity中用插件导入模型格式IFCIFCIFC官网htt原创 2022-03-16 11:30:03 · 7182 阅读 · 1 评论 -
Unity接口的使用
一直感觉接口是一个很高深的东西,所以对它一直不理解,但是又觉得它很好用,比如IPointerEnterHandler这些接口,只要在类中实现它,就能监听到信息。所以今天研究一下它。查看了C#的API,它的接口是创建接口,在类中继承,然后实例化类,调用接口,但是不是我想要的那种效果,具体实例如下:interface ISampleInterface{ void SampleMethod();}class ImplementationClass : ISampleInterface{原创 2022-03-16 10:22:22 · 6973 阅读 · 0 评论 -
C#中各个关键字大小写的区别
一、event和Event名称eventEvent区别c#中的关键字unity的一个类描述event 关键字用于声明发布服务器类中的事件。UnityGUI 事件。链接c#文档unity文档二、string和String名称stringString区别c#中的关键字c#中的类型描述string 是 System.String 在 .NET 中的别名。–链接c#文档–三、byte和Byte名称原创 2022-03-09 10:43:55 · 3589 阅读 · 0 评论 -
unity创建与解析json
今天翻看了一下之前的博客,发现写了好几篇关于加载json的文章,今天正好有时间就把之前的几篇文章的内容总结一下,然后在添加一些新内容。在unity里边可以用的加载json的插件有:JsonUtility(unity自带)、LitJson、Newtonsoft等。插件各有优势,我就不一一列举了,我习惯使用unity自带的json插件,目前足够使用。在创建json文件的时候有两种方法,第一种是手写,第二种是代码生成。不推荐第一种方法,但是万一用到了一定要注意不要用windows自带的笔记本打开json文件原创 2022-03-08 16:13:14 · 3516 阅读 · 0 评论 -
unity使用websocket接受服务器数据推送
最近考虑到项目中如果监听一个设备信息的话,需要持续的监听,如果用unity一直请求的话会很消耗性能,所以在网上搜了一下,发现这种需求叫推送服务,在网上找到好多说用插件的,但是我不想用插件,然后找到了一段代码,直接使用c#自带的websocket,因为没有测试环境,所以没有测试,记录下来以供后续使用。代码如下:using System;using System.Collections;using System.Collections.Generic;using System.Net.WebSocke原创 2022-02-17 14:52:27 · 4117 阅读 · 0 评论 -
Unity打包AssetBundle并加密
一直想研究打包assetbundle,但是一直没机会用,在网上看到的零零碎碎的片段也看不懂,今天终于抽空实验成功了,但是现在虽然成功打包并解析出了单个模型,但是我现在还是不明白怎么去用。在打包过程中,还有两部分不慎明白,一就是打包出来的文件,有很多不知道都是干啥用的;二就是Aes加密还不太懂。先把目前的研究成果记录一下,总共分为三个脚本,打包,加密,解析。下边是三个脚本的具体代码。打包:using System.Collections;using System.Collections.Generi原创 2022-02-16 14:58:45 · 1643 阅读 · 0 评论 -
Unity 程序化网格几何体之矩形三
相对于上一版,增加了如下功能:1.增加按下shift键划直线2.墙体形成闭环后,接口出无缝连接3.增加生成地面功能(待优化)实现效果如下:具体代码如下:using System.Collections.Generic;using UnityEngine;public class CreateStrechMesh3 : MonoBehaviour{ [SerializeField] private Material wallMat = null; //墙体材质 [原创 2021-12-24 17:48:58 · 1897 阅读 · 0 评论 -
Unity 门窗吸附功能
门窗吸附功能,是一个没有难度的小功能,但是如果想要实现的话,在脑子里猛一下却想不起来怎么实现,今天正好实现这个功能,所以记录一下。分为两个脚本,分别为控制门移动的脚本,墙检测的脚本。具体功能如下:using System.Collections;using System.Collections.Generic;using UnityEngine;public class DoorAtt : MonoBehaviour{ public static bool isMoveModelX原创 2021-12-23 17:43:27 · 1942 阅读 · 0 评论 -
Unity 程序化网格几何体之矩形二
上一篇是初次接触程序化网格,所以很多原理不懂,出现的许多问题也是自己不熟悉导致,现在研究了一段时间,之前很多问题已经不存在了,今天把完整的优化后的创建任意长度的矩形的功能记录一下。实现的功能:1.连续创建任意长度矩形2.接缝处可以无缝衔接实现效果:实现代码:using UnityEngine;public class CreateStrechMesh3 : MonoBehaviour{ private void Update() { CreateCu原创 2021-12-23 09:59:53 · 2498 阅读 · 0 评论 -
Unity 程序化网格几何体之矩形一
最近在做编辑器的功能,碰到一个需求是创建任意长度的墙体。思路是点击鼠标,然后拖动鼠标,墙体长度随着鼠标的拖动而增加。通过实现此功能,感觉其中有几个关键点:1.绘制矩形顶点2.绘制矩形三角面3.绘制矩形纹理4.绘制矩形法线5.矩形始终指向鼠标位置6.在结束绘制矩形时,调用Mesh.Clear(),然后重新给矩形顶点赋值,否则会出现拉近视角,模型消失的情况目前发现的问题:在绘制斜着的矩形时,发现贴图会有重影。实现代码如下:using System.Collections;using Sy原创 2021-11-29 17:54:09 · 2451 阅读 · 0 评论 -
Unity问题记录
今天打开CSDN显示我码龄四年,我数了数不对呀,我应该是六年了啊,也许它的计算应该是根据注册时间吧。突然,意识到,已经六年了啊,时间真的过的好快。还记得我在工作的第二年去面试一个公司,面试我的技术经理说,干了十年的C#,当时感觉,十年好厉害啊,可是今天,这个月我都干了六年了,感觉这六年我技术一直没有前进,感觉还是一个小菜鸟。痛定思痛,感觉这么多年没有进步的原因有三点。1.编码过程中不思考;2.遇到的知识点不积累;3.不学习新技术。所以决定写一篇博客来记录unity中遇到的问题,其中有解决方法的我会写上,没原创 2021-09-01 09:18:36 · 224 阅读 · 0 评论 -
unity 通过Tab键切换选中组件
今天又重新写了一下通过Tab键切换选中组件的功能,本来是一个很常用的功能,但是在unity里边却要自己去写。我总结了两种情况,一种是全局切换,就是这个页面上所有可以交互的组件都可以切换。第二种是局部切换,比如某一个节点下的所有可交互的组件切换。 参考了一些网上的教程,最后决定使用获取Selectable的方式来实现。因为Button,InputField,Toggle,Slider这些可交互的UI元素都是继承的Selectable类,而Text,Image等不可交互的UI元素都是继承的Maskabl原创 2021-04-06 17:16:06 · 730 阅读 · 3 评论 -
unity制作映射小地图
刚开始敲代码就在制作小地图,现在还在制作小地图,不过区别在于以前看不懂,现在能看懂了。不说了,说多了都是泪。今天就记录一下制作小地图的过程。 一、场景位置 根据我的理解,场景要放在坐标系的区域内,不要放在坐标轴上,否则计算会很容易把自己搞蒙。 二、放置参照物 就如我们一中那张图,我们把模型放在左上角的区域,本来我们应该用模型的地面的坐标来计算,但是因为有时候建模的不规范,地面的坐标中心不一定是规规矩矩的,所以一劳永逸,我们就放置一个参照物。上图中的小圆圈就是我们的参照物。而玩家是在方框内移原创 2020-10-14 17:36:42 · 1182 阅读 · 0 评论 -
Unity 加载场景(读取Description属性)
这几天要写一个加载场景的静态类,开始是写一个枚举供外部调用,在写一个string数组来一一对应,使用的时候在用switch来case获取场景的名字,使用起来很麻烦,后来发现了一个属性Description,可以用来注释枚举属性,但是这时候需要我们自定义一个函数来读取这个属性,下边我就一一来搭建一下这个加载场景的静态类。1.首先申请一个枚举,在枚举属性上写上Description属性,然后提示需要引用命名空间:using System.ComponentModel public enum SceneNam原创 2020-09-22 12:02:36 · 955 阅读 · 2 评论 -
unity 使用Tab切换控件
想实现一个输入界面很常用的功能,就是使用tab键切换控件,但是在unity里边操作UI实在难用,在网上找了半天,都是一些比较复杂的方法,心里觉得不应该那么难,终于找到了一种比较简单的方法,修改之后感觉用着不错,所以贴出来供大佬们享用。1.首先申请一个数组用来盛放需要响应的组件 /// <summary> /// 响应tab键的控件 /// </summary> /// <typeparam name="GameObject"></typ原创 2020-09-11 14:00:23 · 1318 阅读 · 0 评论 -
c# 递归算法获取数组里边所有组合
private int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19 }; private int num = 11; private int[] result = null; private int index = 0; // Start is called before the first frame update void Start..原创 2020-08-28 11:01:20 · 1688 阅读 · 0 评论 -
unity实现透视相机与正交相机的平滑切换
using System.Collections;using System.Collections.Generic;using UnityEngine;public class viewchange : MonoBehaviour { public static viewchange Instance=null; /// <summary> /// 相机透视改变是否触发(调用只需把此值改为true) /// </summary> public bool Chan原创 2020-08-20 17:15:23 · 1357 阅读 · 0 评论 -
unity 模型颜色渐变shader
Shader "Law/Car" { Properties{ _MainColor("MainColor",color) = (1,1,1,1) _Color("Color",color) = (1,1,1,1) _Center("Center",range(-4.1,2.1)) = 0 _R("R",range(0,1)) = 0.2 _Glossiness("Smoothness", Range(0,1)) = 0.转载 2020-08-12 17:59:39 · 2668 阅读 · 0 评论 -
unity动态设置shader的属性(逐渐完善)
感觉今天又有点东西需要记录了,打算这篇文章也是长期更新的文章,设置属性这些东西以前也用过,网上也有很多,但是今天用发现还是不会,以前只有印象,用的时候还得百度,模棱两可的,所以准备记录下来,增强下记忆和供查询。更新时间2020.08.06改变光滑度 (Smoothness)materia.SetFloat ("_Glossiness", 0.5f)改变渲染模式(Rendering Mode)materia.SetFloat ("_Mode", 3)改变贴图重叠次数(Ti原创 2020-08-06 16:55:05 · 1900 阅读 · 0 评论 -
unity打包WebGL问题记录(逐渐完善)
这两天在打包webgl,正好趁着这个机会记录一下遇到的问题,我现在用的unity版本是2018.02.17,开发工具用的vscode。一、PlayerSettings设置中把Strip Engine Code选项去掉,如果你感觉对代码感觉非常精准的话,可以勾选上,否则会出现很多莫名其妙的问题二、File.Exists (path)不能用打包了一天的webgl测试出这段代码不能用,查了一下百度,有大神是这样说的:“win10系统。查看接口说明才知道,如果你不是按管理员方式启动VS,而此文件需要管理员权原创 2020-08-05 18:31:54 · 2083 阅读 · 2 评论 -
unity 打包安卓UI自适应
前言一直以来在我感觉UI自适应就是一个老大难的问题,从入这行的时候老师给我们讲UI自适应就觉得懵懵懂懂,也许是潜意识在作祟,一直感觉UI自适应挺难的,工作之后打包apk的时候也找过UI自适应的方法,感觉靠谱的方法就是根据不同的手机比例制作不错比例的UI,但是一般公司没人去整这个。还有就是度娘上边零零总总的文章,都是在说设置锚点和中心点,之前我也用这种方法,在手机屏幕比例和设计时候的UI比例相近的时候没什么问题,但是如果手机屏幕的比例和设计时候的比例相差比较大的时候,就会出现问题了,首当其冲的就是UI拉原创 2020-07-15 15:52:41 · 2155 阅读 · 0 评论 -
对话功能实现
之前一直在听别人说面向对象,自己也一直在说对象,其实在心里对面向对象并没有什么感觉,知道今天在写一个人物对话的功能,突然就明白了对象的意思,就像突然顿悟了一样,对象就是每一个类只管它自己的事情,不要和别的功能重叠,不要和别的功能重叠,不要和别的功能重叠。以下是详细代码:using System.Collections;using System.Collections.Generic;usi...原创 2020-02-22 17:12:12 · 417 阅读 · 0 评论 -
设备拆分功能实现
最近做项目需要把一个设备进行拆分,写了一个拆分功能,感觉实现的效果不过,特此贴出来和大家分享。功能大体的思路是以设备中心为原点,原点左边的零件向左移动,原点右边的零件向右移动,原点上边的零件向上移动,原点下边的零件向下移动。具体实现方法:using System.Collections;using System.Collections.Generic;using UnityEngine;...原创 2020-02-22 16:49:43 · 765 阅读 · 4 评论 -
虚拟现实技术(VR)
虚拟现实技术1、简介VR是Virtual Reality的缩写,中文的意思就是虚拟现实(真实幻觉、灵境、幻真),也称灵境技术或人工环境。概念是在20世纪80年代初提出来的,其具体是指借助计算机及最新传感器技术创造的一种崭新的人机交互手段。虚拟现实是利用电脑模拟产生一个三维空间的虚拟世界,提供使用者关于视觉、听觉、触觉等感官的模拟,让使用者如同身临其境一般,可以及时、没有限制地观察三度空间内的事...原创 2020-01-06 19:50:57 · 15386 阅读 · 3 评论 -
Steamvr探索(2)_实现瞬移和自由移动的功能
一、瞬移功能瞬移功能网上的例子挺多的,我就不多赘述了,在此附上一个例子,按着做就能实现瞬移:https://blog.csdn.net/Czhenya/article/details/78483099。二、自由移动这个功能也挺简单,这个功能是接着上一篇文章写的,如果看不懂就看一下我的上一篇文章,挺简单的直接上代码。把这个类直接放在Player上就可以。using System.Colle...原创 2019-10-12 14:54:50 · 4562 阅读 · 3 评论 -
unity 键值对
KeyCode :KeyCode是由Event.keyCode返回的。这些直接映射到键盘上的物理键。值 对应键 Backspace 退格键 Delete Delete键 Tab TabTab键 Clear Clear键 Return 回车键 Pause 暂停键 Escape ESC键 Space 空格键 ...转载 2018-09-05 14:44:48 · 1308 阅读 · 0 评论 -
关于Quaternion小记
1、Quaternion.LookRotation 看了半天终于看懂了点这个函数怎么用,就是transform的forward指向你赋予的第一个参数,up指向你赋予的第二个参数,既图中的”1”指向”2”,”3”指向”4”。如果一个参数的话就是forward指向你赋予的向量。...原创 2018-09-04 16:01:45 · 591 阅读 · 0 评论 -
unity 使sprite铺满整个屏幕
直接上代码:/// /// 使sprite铺满整个屏幕 /// private void MatchingAnimatorToCamera(GameObject _objanimator) { if (_objanimator != null) { m_AnimatorSprite = _...原创 2018-07-24 16:59:14 · 5059 阅读 · 0 评论 -
做AR的一些心得
一、透视效果 有时候做AR不一定是用高通或者easyAR的SDK,有时候需要自己做,比如电脑上的一些AR效果,这时候就需要来我们自己来摆放虚拟模型和真实图像的位置。 首先虚拟模型的坐标应该是原点坐标,然后角度的话,我参照高通的效果是 Quaternion.identity,但是有一次我摆放的模型和真实图像是垂直的,也能摆出增强现实的效果,所以现在具体的角度我还没...原创 2018-05-11 14:13:20 · 2612 阅读 · 0 评论 -
Unity内用AVProLiveCamera获取外部图像
1、首先得先安装采集卡,然后得连接摄像头,知道摄像头输出的分辨率和刷新频率是多少,这个每个设备和每个设备都不一样,看具体情况而定,就不多赘述。2、打开unity,导入AVProLiveCamera插件,创建所需的组件,如ugui,mesh等,然后绑定上相应的avpro组件,如图1,图2,在图1中mode select by可选可不选,暂时不知道有没有起到作用。 ...原创 2018-02-23 14:41:24 · 5006 阅读 · 11 评论 -
Unity渲染在所有层之上的shader
Shader "UI/Default_OverlayNoZTest"{Properties{[PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {}_Color("Tint", Color) = (1,1,1,1)_StencilComp("Stencil Comparison", Float) =转载 2018-02-01 19:32:44 · 1537 阅读 · 0 评论 -
unity通过天气接口获取json数据
首先先说一下我从中发现的需要的注意点,json接收的时候的类中的属性名一定要和json中的键值名字一样,否则的话接收不到,这个新手一定要谨记。首先找一个天气接口的api,开始找网上的中国天气网的免费接口,但是获取到的数据不准确,后来找了个简单的,和风天气,申请简单也能免费用。所以目前用的和风的。https://www.heweather.com/json原始数据: {"HeWea...原创 2018-01-04 15:38:43 · 2343 阅读 · 0 评论 -
unity各个平台的路径总结
关于Unity3D在各平台上的路径问题,网上有好多的资料,如下是比较好的参考资料:1、http://www.manew.com/thread-23491-1-1.html2、http://www.xuanyusong.com/archives/2656 这里我不详细解释和路径的用法,只把各个路径对应的位置和访问方式总结一下。1、Resources路径 Resourc转载 2017-11-06 16:51:46 · 2847 阅读 · 0 评论 -
unity 选择不同的枚举在面板上显示不同的属性
一、创建一个普通类using System.Collections;using System.Collections.Generic;using UnityEngine;public class MyJointManager : MonoBehaviour { private enum Hand { LeftHand,原创 2017-11-20 15:25:17 · 5231 阅读 · 0 评论