unity3

Unity3D常用方法

1、StartCoroutine(Thread1()) 启动协程运行Thread1()方法。 注意是协程,不是线程,详情见:https://www.jianshu.com/p/6d923cb0c900 2、yield return new WaitForSeconds(3.0f); 中断协程3秒 3 ......
常用 Unity3D 方法 Unity3 Unity

查看Unity3D中默认的变量名与按键的映射

选择 Edit/Project Settings/Input Manager 点击 Axes 即可查看对应变量名与按键的映射关系 ......
变量 按键 Unity3D Unity3 Unity

在MacOS下使用Unity3D开发游戏

第一次发博客,先发一下我的游戏开发环境吧。 去年2月份买了一台MacBookPro2021 M1pro(以下简称mbp),这一年来一直在用mbp开发游戏。我大致分享一下我的开发工具以及使用体验。 1、Unity 官网链接: https://unity.cn/releases 我一般使用的Apple ......
Unity3D Unity3 MacOS Unity 3D

集成Unity3D到iOS应用程序中

如果想让原生平台(例如 Java/Android、Objective C/iOS 或 Windows Win32/UWP)包含 Unity 功能,可以通过Unity 生成UnityFramework静态库包含到项目中进行实现。 Unity 从2019.3 开始支持将 Unity 运行时组件集成到原生 ......
应用程序 Unity3D 程序 Unity3 Unity

Unity3d创建二维码(利用zxing2.2)

首先 下载ZXing.Net.0.12.0.0.zip,下载地址为http://zxingnet.codeplex.com/ 然后找到其中的unity文件夹,将文件夹放到Unity的工程内。 脚本: using UnityEngine; using System.Collections; using ......
Unity3d Unity3 zxing2 Unity zxing

unity3d面试题及答案

unity3d面试题及答案 1.请描述游戏动画有哪几种,以及其原理。答:主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。 关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2中使用了这种动画; 单一网络模型动画由一个完整的网格模 ......
答案 unity3d unity3 unity 3d

【Unity3D】Unity3D技术栈

1 前言 ​ 本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到本文中。 ​ 1)Unity 相关网站 Unity 官网:https://unity.cn/ Uni ......
Unity3D Unity3 Unity 技术 3D

【Unity3D】空间和变换

1 空间 1.1 左右手坐标系及其法则 1.1.1 左右手坐标系 左手坐标系与右手坐标系 ​ Unity 局部空间、世界空间、裁剪空间、屏幕空间都采用左手坐标系,只有观察空间采用右手坐标系。 ​ 左右手坐标系除了坐标系朝向(旋向性)不同,还存在以下差异: 左手坐标系下旋转正方向的定义遵循左手法则,右 ......
Unity3D Unity3 Unity 空间 3D

【Unity3D】激光灯、碰撞特效

1 需求描述 ​ 本文将模拟激光灯(或碰撞)特效,详细需求如下: 从鼠标位置发射屏幕射线,检测是否与物体发生碰撞 当与物体发生碰撞时,在物体表面覆盖一层激光灯(或碰撞)特效 ​ 本文代码见→激光灯、碰撞特效 2 原理 ​ 获取屏幕射线与物体的碰撞点,并在 shader 中计算顶点与碰撞点的距离(记为 ......
激光灯 激光 特效 Unity3D Unity3

【Unity3D】Shader常量、变量、结构体、函数

1 源码路径 ​ Unity Shader 常量、变量、结构体、函数一般可以在 Unity Editor 安装目录下面的【Editor\Data\CGIncludes\UnityShader】目录下查看源码,主要源码文件如下: UnityCG.cginc UnityShaderUtilities.c ......
常量 变量 函数 Unity3D 结构

【Unity3D】基于模板测试和顶点膨胀的描边方法

1 前言 ​ 选中物体描边特效 中介绍了基于模板纹理模糊膨胀的描边方法,该方法实现了软描边,效果较好,但是为了得到模糊纹理,对屏幕像素进行了多次渲染,效率欠佳。本文将介绍另一种描边方法:基于模板测试和顶点膨胀的描边方法,该方法绘制的是硬描边,但效率较高。 ​ 基于顶点膨胀的描边方法都会遇到以下问题: ......
顶点 模板 Unity3D 方法 Unity3

【Unity3D】水波特效

1 水波特效原理 ​ 水波特效属于 Unity3D 后处理特效,其原理是:对渲染后的纹理进行局部挤压和拉升变换,即对局部 uv 坐标进行周期性的偏移运动,实现波纹效果。 ​ 1)波形方程 ​ 为简化水波模型,我们假设水波以机械波(正弦或余弦)传播,并且 0 时刻的水面波形函数为: ​ 其中,r 是质 ......
水波 特效 Unity3D Unity3 Unity

【Unity3D】卷轴特效

1 原理 ​ 当一个圆在地面上沿直线匀速滚动时,圆上固定点的运动轨迹称为旋轮线(或摆线、圆滚线)。本文实现的卷轴特效使用了旋轮线相关理论。 ​ 以下是卷轴特效原理及公式推导,将屏幕坐标 (x) 映射到纹理坐标 (u)。 ​ 注意:屏幕坐标 x 值域为 [0, ScreenWidth],这里已归一化到 ......
卷轴 特效 Unity3D Unity3 Unity

【Unity3D】Photon环境搭建

1 简介 ​ Photon 是一个泛用性的 ScoketServer 套装软件,可用于多人在线游戏、聊天室、大厅游戏,并同时支持 Windows、Unity3D、iOS、Android、Flash 等平台。Photon 包含两个部分,一部分是 Socket 服务器,另一部分是其针对各个平台编写的 S ......
Unity3D 环境 Photon Unity3 Unity

【Unity3D】缩放、平移、旋转场景

1 前言 ​ 场景缩放、平移、旋转有两种实现方案,一种是对场景中所有物体进行同步变换,另一种方案是对相机的位置和姿态进行变换。 ​ 对于方案一,如果所有物体都在同一个根对象下(其子对象或孙子对象),那么只需要对根对象施加变换就可以实现场景变换;如果有多个根对象,那就需要对所有根对象施加变换。该方案实 ......
场景 Unity3D Unity3 Unity 3D

【Unity3D】半球卷屏特效

1 原理 ​ 凸镜贴图 和 渐变凸镜贴图 中介绍了使用 OpenGL 实现凸镜贴图及其原理,通过顶点坐标映射到纹理坐标,并构造三角形网格,构建了真正的三维凸镜模型。本文通过 Shader 实现半球卷屏特效,通过屏幕坐标映射到纹理坐标,不需要构建凸镜模型,效率更高。 ​ 1)凸变换原理 ​ 以下凸变换 ......
半球 特效 Unity3D Unity3 Unity

【Unity3D】使用GL绘制线段

1 前言 ​ 线段渲染器LineRenderer、拖尾TrailRenderer、绘制物体表面三角形网格从不同角度介绍了绘制线段的方法,本文再介绍一种新的绘制线段的方法:使用 GL 绘制线段。 ​ Graphics Library(简称 GL),包含一系列类似 OpenGL 的 Immediate ......
线段 Unity3D Unity3 Unity 3D

【Unity3D】选中物体描边特效

1 前言 ​ 描边的难点在于如何检测和识别边缘,当前实现描边特效的方法主要有以下几种: ​ 1)基于顶点膨胀的描边方法 ​ 在 SubShader 中开 2 个 Pass 渲染通道,第一个 Pass 通道渲染膨胀的顶点,即将顶点坐标沿着法线方向向外扩展,并使用纯色给扩展后的顶点着色,第二个 Pass ......
物体 特效 Unity3D Unity3 Unity

【Unity3D】绘制物体表面三角形网格

1 仅绘制三角形网格 ​ 1)创建游戏对象 ​ 创建一个空对象,重命名为 Grid,并在其下添加需要绘制网格的对象,如下: ​ 场景显示如下: ​ 2)添加脚本组件 ​ GridController.cs using System; using UnityEngine; public class G ......
网格 三角形 物体 表面 Unity3D

【Unity3D】基于AssetBundle实现资源热更新

1 前言 ​ Unity3D 本地资源一般放在 Resources 目录下,但是 Resouces 文件夹的大小不能超过 2G,使用 AssetBundle 管理资源可以解决 Resources 文件夹受限问题。 ​ 本文代码资源见→基于AssetBundle实现资源热更新。 ​ AssetBund ......
AssetBundle Unity3D Unity3 资源 Unity

【Unity3D】绘制物体外框线条盒子

1 需求描述 ​ 点选物体、框选物体、绘制外边框 中介绍了物体投影到屏幕上的二维外框绘制方法,本文将介绍物体外框线条盒子绘制方法。 内框:选中物体后,绘制物体的内框(紧贴物体、并与物体姿态一致的内框盒子) 外框:选中物体后,绘制物体的外框(紧贴物体、并与世界坐标系的朝向一致的外框盒子) ​ 内框和外 ......
物体 线条 盒子 Unity3D Unity3

【Unity3D】点选物体、框选物体、绘制外边框

1 需求描述 ​ 绘制物体外框线条盒子 中介绍了绘制物体外框长方体的方法,本文将介绍物体投影到屏幕上的二维外框绘制方法。 点选物体:点击物体,可以选中物体,按住 Ctrl 追加选中,选中的物体设置为红色。 框选物体:拖拽鼠标,屏幕上会出现滑动框,滑动框内的物体会被选中,选中的物体设置为红色。 绘制外 ......
物体 边框 Unity3D Unity3 Unity

【Unity3D】协同程序

1 简介 ​ 1)协程概念 ​ 协同程序(Coroutine)简称协程,是伴随主线程一起运行的程序片段,是一个能够暂停执行的函数,用于解决程序并行问题。协程是 C# 中的概念,由于 Unity3D 的渲染操作是基于帧实现的,使用线程(Thread)不便于控制,因此 Unity3D 选择使用协程实现并 ......
Unity3D 程序 Unity3 Unity 3D

【Unity3D】VideoPlayer组件

1 简介 ​ AudioSource组件中介绍了音频的播放,本文将介绍基于 VideoPlayer 组件实现视频播放。 ​ VideoPlayer 属性面板如下: Source:视频源类型,有 2 种类型:Video Clip、URL; Video Clip:视频片段; Play On Awake: ......
VideoPlayer 组件 Unity3D Unity3 Unity

【Unity3D】表面着色器

1 前言 ​ 固定管线着色器一、固定管线着色器二 中介绍了 ShaderLib 的基本用法,本文将接着讲解表面着色器(Surface Shader)的用法。固定管线着色器基于 ShaderLib 命令实现,表面着色器基于 CG 语言实现。目前主流的 Shader 编程语言主要有 GLSL、HLSL、 ......
表面 Unity3D Unity3 Unity 3D

【Unity3D】粒子系统ParticleSystem

1 简介 ​ 拖尾(TrailRenderer)、线段渲染器(LineRenderer)、粒子系统(ParticleSystem)是 Unity3D 提供的三大特效,其中粒子系统的功能最为强大,特效也最炫酷,但操作也最复杂。粒子系统中,不断地有粒子生成和粒子消亡,一般而言,粒子消亡速率和生成速率保持 ......
粒子 ParticleSystem Unity3D Unity3 系统

【Unity3D】同步Socket通讯

1 前言 ​ 在多人对战网络游戏中,玩家之间一般不是直接通讯,而是与服务器通讯,服务器再把消息转发给其他玩家。网络通讯一般基于 Socket 实现,也有一些开源网络游戏框架,如:光子引擎 Photon,其底层仍然使用 Socket 实现网络通讯。 ​ 同步 Socket 是指 Socket 的部分方 ......
Unity3D 通讯 Socket Unity3 Unity

【Unity3D】异步Socket通讯

1 前言 ​ 同步 Socket 通讯 中的 Accept、Connect、Receive 等方法会阻塞当前线程,当前线程必须等待这些方法执行完,才会继续往下执行,用户需要另开线程执行这些耗时方法,否则会阻塞主线程,导致 UI 卡顿。 ​ 异步 Socket 通讯中,通过 BeginAccept、E ......
Unity3D 通讯 Socket Unity3 Unity

【Unity3D】线段渲染器LineRenderer

1 LineRenderer 简介 ​ LineRenderer 组件用于绘制线段,可以调整线段条数、端点坐标、颜色、宽度等属性,其属性面板如下: Materials:线段材质,最好设置为 Default-Line; Positions-Size:线段端点个数; Positions-Element: ......
线段 LineRenderer Unity3D Unity3 Unity

【Unity3D】固定管线着色器一

1 前言 ​ 着色器(Shader)是渲染管线中最重要的一环,Unity3D 底层基于 OpenGL 实现,读者可以通过 渲染管线 了解 Unity3D 渲染流程。 ​ OpenGL 1.x 为固定管线,2.x 之后才支持可编程管线,Unity3D 固定管线着色器使用 ShaderLab 语言实现。 ......
管线 Unity3D Unity3 Unity 3D