Unity学习
文章平均质量分 51
做一只会飞的猪
一个懒惰的程序猿
展开
-
Unity播放带Alpha通道的视频【WebM+Video Player】(替代播放GIF方案)
Unity播放带Alpha通道的视频【WebM+Video Player】(替代播放GIF方案)原创 2022-12-02 13:25:16 · 5498 阅读 · 4 评论 -
Newtonsoft动态解析Json数据
Newtonsoft动态解析复杂嵌套结构原创 2022-04-22 11:58:35 · 1557 阅读 · 0 评论 -
Unity中使用gRPC进行数据交互
gPRC简介在gRPC中,客户端应用程序可以直接在其他计算机的服务器应用程序上调用方法,就好像它是本地对象一样,这使您更轻松地创建分布式应用程序和服务。与许多RPC系统一样,gRPC围绕定义服务的思想,指定可通过其参数和返回类型远程调用的方法。在服务器端,服务器实现此接口并运行gRPC服务器以处理客户端调用。在客户端,客户端具有一个stub(在某些语言中仅称为客户端),提供与服务器相同的方法...原创 2019-12-19 16:48:34 · 5886 阅读 · 4 评论 -
Unity中合并Mesh生成LOD
Unity原创 2019-10-21 19:57:49 · 2362 阅读 · 0 评论 -
下载Google瓦片地图并在Unity中作为场景底图
Unity原创 2019-10-21 11:25:32 · 4802 阅读 · 3 评论 -
Unity2017中Timeline的简单使用方法
Timeline是Unity2017版本中新加入的功能,可以非常方便的进行场景动画的创建和修改,包括物体、声音、粒子、动画、特效、自定义Playable以及子Timeline等多种资源进行整合,从而能够较方便的生成效果很棒的场景动画,同时可以通过Unity的Recorder资源包录制较为完整的视频并导出。 1.Timeline界面简单介绍在Unity2017中,点击Windo...原创 2018-02-27 22:36:25 · 71010 阅读 · 7 评论 -
Unity开发Hololens应用,自动生成包裹物体大小的三维旋转和缩放边框
在开发Hololens应用时,可能会碰到需要实现物体旋转和缩放的功能,在制作物体旋转缩放控制块时,通过此方法可以快速创建与物体等大小的边框,减少部分工作量。 直接上代码using System.Collections;using System.Collections.Generic;using UnityEditor;using UnityEngine;public cla...原创 2018-03-01 15:36:47 · 1995 阅读 · 4 评论 -
Unity实现UGUI中按钮的单机、右击和中键点击的判定
直接上代码吧,把这个代码绑定到Unity的相应Button上即可实现。public class RightClick : MonoBehaviour, IPointerClickHandler{ public UnityEvent leftClick; public UnityEvent middleClick; public UnityEvent rightCli...原创 2018-05-03 14:37:58 · 7481 阅读 · 7 评论 -
Unity中不同平台快速切换
在项目开发过程中通常我们需要对不同的平台进行打包,当我们项目比较大时,平台之间的转化变得异常缓慢,浪费了大量的时间。在Unity中,我们的项目通常包含如下几个文件夹 我们的项目文件全部存放在Assets文件夹中,其中包含了我们整个项目运行所需的全部资产,如模型、贴图、材质、声音、视频等等,这些资产在导入时会生成对应的.meta文件,这些文件保存了资产之间的引用关系信息。 在Assets...原创 2018-08-09 16:45:14 · 11123 阅读 · 1 评论 -
在Unity3D中更改FBX模型的中心点(Unity3D/3DMax)
当我们将模型导入到Unity3D中时,经常会遇到模型的中心点与物体中心点相差甚远的情况 这种情况通常会对我们的物体位置控制产生一些不利影响(当然这种设置也有其存在的好处……) 要解决类似问题,我们通常可以在Unity3D中进行设置。原创 2017-08-24 10:27:45 · 30194 阅读 · 1 评论 -
Unity3D中在Inspector面板中显示复合属性信息(类属性/Struct属性)
在Unity3D开发过程中,我们可能会需要在Inspector中显示某些较复杂的数据类型原创 2017-09-12 19:28:51 · 10842 阅读 · 0 评论 -
Unity中AssetBundle的打包和加载
在Unity中,实现物体动态加载的方法主要包括了Resources.Load()和AssetBundle两种。当我们的游戏资源需要热更新时,AssetBundle是一种不错的实现方式。 Unity官方提供了十分方便的打包工具Asset Bundle Browser,同时该工具也作为开源项目放到了GitHub上。通过Window->AssetBundle Browser便可打开该工具进行相关操作。原创 2017-07-27 19:00:16 · 12418 阅读 · 0 评论 -
Unity3D发布WebGL(网页)到IIS服务器并加入ASP.NET页面中
在Unity3D中发布WebGL,当我们需要将其加入我们自己的网站时,需要将WebGL的内容放入服务代码中。原创 2017-08-24 23:35:48 · 13496 阅读 · 3 评论 -
Unity在编辑器中通过代码更改Tag
在Unity的编辑器中,当我们有较多的Tag需要手动输入时,我们可以通过代码来简化此过程,同时也可以通过代码将我们的工程导入其他项目时来检查需要的Tag是否存在。同时,在AssetBundle导出的过程中,虽然模型中的Tag会被保留,但是其保存的仅仅是Tag列表中的一个顺序,而非真正的根据名称保存的。这就需要当我们在不同的项目中进行Bundle的导入导出时重点检查的部分,否则容易出现意想不到的结果。原创 2017-07-27 19:23:28 · 6685 阅读 · 2 评论 -
Unity3D中FindGameObjectsWithTag的排序问题
在Unity中,当我们的模型结构较为复杂时,通常我们会为某些层级的模型指定相应的Tag,当我们通过FindGameObjectsWithTag来找到我们想要的物体时,他们通常并不是按照在Hierarchy中的顺序来填充我们的数组,而是以一种随机的方式来完成。当我们需要对其进行排序时,可以借助GetSiblingIndex()来实现。原创 2017-07-27 19:16:57 · 2696 阅读 · 0 评论 -
Unity中手动设置纵横比
在Unity中,我们一般不会手动设置屏幕的纵横比,Unity在运行过程中会通过计算自动设置纵横比,但是在一些特殊情况下需要对纵横比进行手动设置,比如我们显示的屏幕被被动压缩时(如在LED屏幕上设置多屏幕显示时,难免会对部分屏幕画面进行压缩显示,在电脑显示器上显示正常,但是在大屏幕上却被压缩),我们可以通过设置纵横比来改善被压缩的情况。 在Camera中有一个属性aspect,用于设置纵横比。...原创 2018-08-28 13:43:02 · 1583 阅读 · 0 评论 -
Unity设置相机正交相机和透视相机的动态切换
在Unity的场景中通常用来渲染的相机使用的是透视相机,但是偶尔也需要使用正交相机来展示某些效果,如二维场景、城市天际线等,可以通过代码动态设置相机的呈现效果。正交视图不会根据物体距离相机的距离进行缩放,因此我们无法看到物体距离的远近,只能通过相互遮挡关系来判断。在Unity中UI的显示便是利用了类似正交相机的原理。 一些游戏也可以通过正交相机来实现2D效果。 可以通过设置相机的Proje...原创 2018-08-28 16:20:46 · 13303 阅读 · 0 评论 -
ASP.NET中的WebService应用及在Unity的WebGL中的使用
WebService用来提供数据给其他程序使用,与一般处理程序(ashx)功能类似,一般情况下,WebService主要用来为外部应用程序提供数据,如果是内部应用程序,则主要使用一般处理程序来完成。需要学习WebService的可以提前了解一下WCF。这里我们重点介绍下ASP.NET中WebService的使用。ASP.NET中WebService的创建在Visual Studio中创建...原创 2018-12-05 18:10:12 · 1394 阅读 · 1 评论 -
3D模型建模标准
3D模型建模规范本文提到的所有数字模型制作,全部是用3D MAX建立的模型,即使是不同的驱动引擎,对模型的要求基本是相同的。当一个VR模型制作完成时,它所包含的基本内容包括:场景尺寸、单位,模型归类塌 陷、命名、节点编辑,纹理、坐标、纹理尺寸、纹理格式、材质球等必须是符合制作规范的。一个归类清晰、面数节省、制作规范的模型文件对于程序控制管理是十 分必要的。首先对制作流程作简单介绍:素材采集-...转载 2019-08-07 09:32:00 · 8166 阅读 · 2 评论 -
Unity发布WebGL动态改变分辨率大小
修改画布大小在html中修改画布大小 function resetSize1() { //修改画布大小 document.getElementById("#canvas").style.width = "100px"; document.getElementById("#canvas").style.height = "100px";...原创 2019-07-04 15:41:31 · 4832 阅读 · 0 评论 -
Unity导入glTF格式模型
glTF介绍1.glTF(GL TransmissionFormat),即图形语言交换格式,它是一种3D内容的格式标准,由Khronos Group管理(Khronos Group还管理着OpenGL系列、OpenCL等重要的行业标准);2.glTF是一种免版税的规范,用于按应用高效传输和加载3D场景和模型;3.glTF的设计是面向实时渲染应用的,尽量提供可以直接传输给图形API的数据形式,...原创 2019-07-03 08:56:43 · 16773 阅读 · 1 评论 -
Unity打开ShapeFile并关联属性(Bentley平台)
1.在Bentley中打开Shape文件,其中可以查看相应的Shape属性2.使用自主研发的Bentley导出插件导出每个地块的属性保存进入数据库,导出每个地块模型转化为fbx,通过元素ID进行关联数据关联。3.在Unity中通过UnityWebRequest获取数据库中保存的相关属性,根据ID号关联到模型上。【该方法不具有可操作性,仅用于记录相关处理方法】...原创 2019-06-20 17:29:20 · 1630 阅读 · 1 评论 -
Unity导入SketchUp模型
1.SketchUp创建模型2.将SketchUp文件导入Unity3.设置Unity中相关选项4.完成原创 2019-04-24 11:51:03 · 5238 阅读 · 0 评论 -
Unity中判断点击按钮时鼠标事件(左键、中键、右键)
public UnityEvent leftClick; public UnityEvent middleClick; public UnityEvent rightClick; private void Start() { leftClick.AddListener(new UnityAction(ButtonLeftClick)); ...原创 2019-01-31 11:53:10 · 15339 阅读 · 4 评论 -
Unity中实现文件的打开(视频、图片、pdf、excel、word、ppt等)
public class OpenFileController : MonoBehaviour { string path; private void Update() { if (Input.GetKeyDown(KeyCode.A)) { path = Application.dataPath; ...原创 2019-01-31 11:09:29 · 9022 阅读 · 7 评论 -
Unity发布的EXE应用程序中动态改变分辨率大小
private void Update() { if (Input.GetKeyDown(KeyCode.Alpha1)) { Screen.SetResolution(200,200, false, 60); } if (Input.GetKeyDown(KeyCode.Alpha2)) ...原创 2018-12-11 13:35:14 · 2593 阅读 · 0 评论 -
Unity实现在IOS中进行GPS定位
在Unity中新建一个项目,进行如下设置:新建脚本文件,如下所示:using System.Collections;using System.Collections.Generic;using UnityEngine;using UnityEngine.UI;public class GPSTest : MonoBehaviour { string GetGps = ""...转载 2018-12-11 13:27:43 · 1672 阅读 · 0 评论 -
Unity中将高度图转换为Terrain
点击这里进行地理位置高度图的选择和下载。将下载的高度图导入Unity,新建C#脚本HeightmapFromTextureusing System.IO;using UnityEditor;using UnityEngine;public static class HeightmapFromTexture{ [MenuItem("Terrain/Heightmap From T...翻译 2018-12-11 10:32:16 · 2122 阅读 · 0 评论 -
Unity3D导出WebGL与ASP.NET交互
当我们通过Unity发布WebGL时,通常会希望我们的Unity3D程序可以和网页中的元素进行交互,通过Unity内部的函数与网页端的方法交互实现数据的实时传递。 当我们把Unity发布出来时,通常会包含如下的文件: 在Build文件夹中包含了WebGL所有打包的内容,其中最重要的部分是UnityLoader.js和*.json这两个文件。 详细的介绍可以从官方的Interacting ...原创 2017-07-27 18:00:03 · 11350 阅读 · 0 评论 -
Unity中协程(IEnumerator)的使用方法介绍
在Unity中,一般的方法都是顺序执行的,一般的方法也都是在一帧中执行完毕的,当我们所写的方法需要耗费一定时间时,便会出现帧率下降,画面卡顿的现象。当我们调用一个方法想要让一个物体缓慢消失时,除了在Update中执行相关操作外,Unity还提供了更加便利的方法,这便是协程。原创 2017-07-25 21:01:37 · 106475 阅读 · 5 评论 -
Unity3D导入NuGet的Newtonsoft.Json并进行相关操作
Unity3D使用Newtonsoft.Json实现Json和Object之间相互转换原创 2016-12-15 20:51:36 · 9629 阅读 · 0 评论 -
Unity中UGUI播放视频
在UGUI的Canvas中添加RawImage,在代码中定义MovieTexture,将MovieTexture的值赋值给RawImage的Texture。MovieTexture movieTexture = Resources.Load("***") as MovieTexture;GetComponent<RawImage>().texture = movieTexture;((Movie原创 2016-12-08 15:40:05 · 2696 阅读 · 0 评论 -
Unity中使用UGUI制作Prefab后,调用Instantiate动态生成Button无法点击的解决方法
Unity中使用UGUI制作Prefab后,调用Instantiate动态生成Button无法点击的解决方法需要在动态添加button的父物体上添加Graphic Raycaster控件才能进行控制,或者动态添加到Canvas下作为其自物体。 Not signed i原创 2016-12-13 11:19:32 · 5549 阅读 · 1 评论 -
Unity3D面试和笔试题
Unity3D常见面试和笔试题总结问答题转载 2016-09-15 18:38:56 · 5934 阅读 · 0 评论 -
左手坐标系和右手坐标系
左手坐标系 右手坐标系原创 2016-08-24 00:45:19 · 2080 阅读 · 0 评论 -
Unity中通过PlayerPrefs进行数据保存
在Unity中存储数据也是通过键值对的方式来进行。 主要通过PlayerPrefs来完成。 通过PlayerPrefs可以用来保存和访问玩家的偏好设置。原创 2016-08-23 20:50:19 · 3959 阅读 · 0 评论 -
Unity语音口型学习(Oculus发布的OVRLipSync示例)
了解该部分可以参考Oculus发布的OVRLipSync示例。 https://developer3.oculus.com/downloads/ 将下载下来的package导入Unity,可以运行官方Demo。 该Demo中模型的口型动作,可以通过 Maya Cinema4D 3D Studio Max Blender Cheetah 3D XSI Any tool that s原创 2016-08-23 11:50:36 · 7980 阅读 · 3 评论 -
Unity保存数据方式——PlayerPrefs
Unity3d提供了一个用于本地持久化保存与读取的类——PlayerPrefs。工作原理非常简单,以键值对的形式将数据保存在文件中,然后程序可以根据这个名称取出上次保存的数值。 PlayerPrefs类支持3中数据类型的保存和读取,浮点型,整形和字符串。 对应的函数分别为:SetInt();保存整型数据GetInt();读取整形数据SetFloat();保存浮点型数据GetFlost()原创 2016-09-12 04:12:08 · 9745 阅读 · 0 评论 -
学习shader之前必须知道的东西之计算机图形学——渲染管线
引言shader到底是干什么用的?shader的工作原理是什么? 其实当我们对这个问题还很懵懂的时候,就已经开始急不可耐的要四处搜寻有关shader的资料,恨不得立刻上手写一个出来。但看了一些资料甚至看了不少cg的语法之后,我们还是很迷茫,UNITY_MATRIX_MVP到底是个什么矩阵?它和v.vertex相乘出来的又是什么玩意?当这些问题困扰我们很久之后,我们才发现,原来我们是站在浮沙上筑高台转载 2016-09-12 02:28:07 · 886 阅读 · 0 评论 -
Unity3D中函数执行顺序
上图是官方给出的函数执行顺序,在Unity脚本中敲入如下代码,从输出中可以看到具体的执行顺序。代码如下:void Awake() { Debug.Log("Here is Awake"); } void OnEnable() { Debug.Log("Here is OnEnable"); } void Start() { Debug.原创 2016-09-12 02:00:06 · 2052 阅读 · 0 评论