Unity3D基础知识梳理

Unity(2022.3.38LTS) - 文件夹和常用函数入门 此文是对unity文件夹,和一些awake(),Start(),Update()等一些方法的详细介绍。 阅读详情

原链接:http://unity3d.9ria.com/?p=3009

 

这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两天整理的一些基础知识分享上来了,闲话不多说。

美术部分:

Unity的话主要还是分两块吧,第一块是美术(自己都不懂~这里允许我稍微带过一下吧~),美术的话主要包括3d模型、材质、纹理(贴图)这几部分吧,当然你也可以说还有shader(着色器),Unity本身拥有几十种shader,也可以根据自己的需要使用shaderLab语言来编写shader,这个对我来说相当有难度,所以一般只用Unity自带的和网上“流传”的。

接下来是程序方面的:

基本组成:

Scene场景,类似于Flash中的stage,用于放置各种对象。

GameObject,可以携带各种Component(每个GameObject至少带有Transform组件,所有的组件都可以从顶部菜单Component里面找到并添加给游戏对象)。

 Component组件,附加在GameObject上,不同的组件可以使GameObject具有不同的属性,Transform、碰撞器、刚体、渲染器等都是组件,脚本也是组件的一种,对象所表现出来的行为都是由组件实现的。

脚本语言:

       C#、Javascript、boo(前两者使用较为广泛,网上教程以前两者为主,个人推荐c#),一般的继承MonoBehaviour类的脚本都需要依附的场景中的对象上才能被执行。

用户图形界面部分(GUI):

  • 用于制作按钮、文本显示、滚动条、下拉框等常用图形操作界面元素,使用GUISkin和GUIStyle可以自定义样式)
  • 系统自带GUI
  • 各类GUI插件,NGUI、EZGUI等。

预制:

  • 用于程序运行时,动态实例化对象的“母体”,比如,在射击类游戏中,子弹的生成就可以使用实例化预制的方式来实现,这就好比是Flash中的各种Display类,你可以定义它的各种属性方法,然后在使用的时候直接实例化一个实例。
  • 在project面板右击选择Creat——Prefab新建一个预制,将Hierarchy面板中要制成预制的对象拖到这个新建预制上即可。

标签和层:

  • 标签(tag)用于辨别物体,与name类似,使用对象的tag和name都可以找到对应的物体(GameObject.Find(“Name”)、 GameObject.FindWitnTag(“Tag”))。默认是Untagged,可以通过Inspector面板里面Tag的下拉菜单选择Add Tag项来添加新的标签,  在tagmanager中点开Tags左侧的小三角  通过size来增加标签的数量,每个Element内都填入新标签的名字
  • 层(layer),在使用某些功能的时候,可以通过层来过滤不需要运用该功能的对象,也就是把该功能运用到特定的层,比如,相机的Culling Mask属性,通过选择特定层可以实现只显示位于被选中的层的对象。层的添加也是在标签管理器中,Unity已经设置了8个层,你是不能对这8个层进行修改的,你可以从第9个(也就是user layer8)开始添加你定义的层。

资源:

  • .unitypackage格式的文件可以直接import到unity中,记住最好是在打开unity的情况下,在project面板里右击,然后在import packages中选中你要导入的资源。注:Unity不识别中文路径,因此要导入的资源千万不要放在中文目录下!!!还有你的工程也不要新建在中文目录下!!!(你新建工程的时候选择中文路径的话,也建不起来~)
  • 也可以把你的场景打包,导出.unitypackage资源包,然后可以在其他项目中导入使用。(在project面板里右击, export package)
  • 另外,利用工程面板(project)右键菜单中的import new assets可以导入其他形式的资源,如,模型、音频、视频等,当然也可以直接将外部文件夹中的资源拖到project中的方式完成导入。

物理引擎:

unity使用NVIDIA PhysX物理引擎

  • 碰撞器:各种基本体的碰撞器(box、sphere、capsule、cylinder),网格碰撞器(mesh collider)、车轮碰撞器(Wheel collider)、地形碰撞器(terrain collider)——碰撞器组件在你选中对象的时候会以绿色线框显示。
  • 碰撞检测:碰撞器碰撞检测、光线投射(射线)、触发器碰撞检测,通过碰撞检测可以得到与当前对象发生碰撞的对象信息,使用碰撞的相关函数OnCollisionEnter(碰撞器碰撞检测)、OnTriggerEnter(触发器碰撞检测)、Physics.Raycast(光线投射)获取。
  • 刚体:模拟物体物理现象的基础,加了刚体组件才能模拟重力、阻力等。
  • 力:作用于刚体,你只要通过添加各种力,就可以使刚体表现出跟现实中一样的受力情况。

粒子系统:

两种形式,一种以物体携带粒子系统组件的形式实现,另一种是直接使用粒子系统GameObject(3.5以后)

  • 粒子系统GameObject:GameObject——Creat other——Particle system
  • 粒子系统组件:粒子发射器(ParticleEmitter,有Ellipsoid Particle Emitter和Mesh Particle Emitter两种类型的粒子发射器,主要有粒子产生、数量、速度、大小、存活时间等参数设置)、粒子动画器(Particle Animator,主要负责粒子产生后直至粒子消亡的行为变化的控制,包括运动过程中的旋转、受力等)、粒子渲染器(Particle Renderer,主要是负责给予粒子的渲染,阴影、材质等设定)

抽空可以用粒子组件调一个火焰效果,把所设置的参数值分享给大家。

粒子系统组件参数浅析+火焰粒子demo(http://bbs.9ria.com/forum.php?mo ... 1&extra=#pid1577455)

相机(camera):

  • 相机视角:透视(可以调整透视角度)、正交(没有透视效果)
  • Skybox:只在Game窗口可见,需要skybox类型的shader,以及附在其上的六面贴图纹理。
  • 第一人称视角:角色不出现在视野中,相机看到的就像角色双眼看到的一样,如,常见的FPS射击类游戏。第三人称视角:能在视野中看到角色,相机一直跟随者角色运动。(可以导入Unity自带的CharacterControllers资源包,里面有第一人称和第三人称的原型)

光照系统:

创建灯光GameObject——creat other

  • 常用灯光类型:平行光(Directional light,无衰减,模拟太阳光)、聚光灯(spotlight,从一点向某一方向发射锥形光束,有衰减,聚光效果)、点光源(Pointlight,从一点向外辐射,有衰减)
  • 烘焙:将静态光影效果渲染到纹理上,减少灯光和阴影带来的开销(free版的Unity不支持阴影,因此烘焙是free版实现阴影的方式)。
  • 阴影:只有pro版才支持,分为hard shadows和soft shadows两种,前一种阴影比较重,后一种相对柔和。但是默认情况下,你会发现只要directional light类型的灯光才可以使用阴影,别急,咱们来改一个设置,让其他两种灯光也能使用阴影,打开edit-project settings-player,然后将rendering path改为deferredlighting(延迟光照),这下你的电光源和聚光灯也能产生阴影了~(要产生阴影,还需要将投射阴影的对象的Cast shadows(投射阴影)勾选,将接受阴影的对象的Receive shadows(接受阴影)勾选,  举个例子,你要让树在地面上产生阴影,那就得让树投射阴影,然后让地面接受阴影才行)。

地形系统:

选择顶部菜单Terrain——creat terrain创建一个地形。

地形有一组地形工具用来绘制地形的高度、生成各种地貌,并且可以对地表运用纹理,还可以添加树、草等地表植被。当然在使用纹理绘制地形以及添加地表植被之前需要导入相关的纹理资源和植被资源,另外还可以导入unity自带的水的资源包,使用它里面的水面来模拟地形中的湖泊、河流等。

 发布:

  • 关于Player settings播放器设置的话这里暂且不多说,发布的时候通过player setting进行发布设置,每个平台都有对应的设置参数,根据需要来设置,主要是关于程序图标、分辨率、渲染等设置,大家可以自己试试(有些参数只有pro版才能设置)。
  • 下面我们来看看build settings对话框,左侧是可发布的平台(Unity跨平台性很强大,4.0已支持发布至10种平台:IOS、Andriod、Windows、Mac、Linux、Webplayer、Flash、PS3、Xbox360、Wii u),右侧是对应平台的发布设置,一般初学的话,只要会发布单机版的和webplayer的就差不多了,这两个的话,右侧的发布选项按照默认的设置就可以,当然单机版要在Target Platform中选择对应的操作系统,webplayer的话这里我给大家介绍前两个参数,Streamed顾名思义就是在网络上下载的时候以流的形式,Offline Deployment,这个是可以在离线(断网)状态下本地运行你的webplayer程序(这里需要注意的是,默认情况下你每次打开webplayer程序的时候,浏览器都会自动去访问官网更新webplayer插件,如果你没勾选这个选项而又在没有联网的状态下运行webplayer的话是无法运行的)

 

 

【Unity3d】热更新Assetbundle资源以及需要注意的地方 热更新技术,是当前网络游戏的一项必要功能, 在此只讨论Assetbundle资源的更新, 不讨论代码的更新。 一、进行资源梳理切分,哪些资源是独立性较好的,依赖链清晰的,可以归纳到一个包的,把资源依赖的层级关键画好。 二、将资源分为两大类,一类为内置Resources资源,一类为Assetbundle资源     内置Resources资源或者叫AssetsLibrary,由Unity自行管 阅读详情

相关推荐

tutorial-infosec

Linux访问图片失败

这个问题是因为访问不到图片。 1、打开nginx配置文件:vim cd /etc/nginx/conf.d/Default.conf 2、增加配置location /UploadFiles;这里UploadFiles文件夹其实就是/usr/share/nginx/html/里面的文件夹,也就是/usr/share/nginx/html/UploadFiles/。 location /UploadFiles { #/usr/share/nginx/html/这目录下的UploadFiles文件夹

wingao_hyg的专栏 1305

Unity引擎知识点(有点基础最好)

Unity学习过程中的一些总结,适合有一点点基础的初学者,大牛可以忽略。除了Unity的部分外,包含有xml,sqlite,和json的用法和示例

Unity3D基础知识梳理(转)

这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两天整理的一些基础知识分享上来了,闲话不多说~ 美术部分:        Unity的话主要还是分两块吧,第一块是美术(自己都不懂~这里允许我稍微带过一下吧~),美术的话主要包括3d模型、材质、纹理

AnYuanLzh 1787

Tutorial Master 2(附教程)

Unity的新手引导插件。(已订阅教程的同学可联系我免费下载) 插件教程:https://blog.youkuaiyun.com/weixin_38239050/category_11617753.html 或:https://blog.youkuaiyun.com/weixin_38239050/category_9577875.html

W5500 TCP服务器状态机详解:从SOCK_CLOSED到SOCK_ESTABLISHED的完整流程

本文深入解析W5500芯片作为TCP服务器时的状态机转换流程,从SOCK_CLOSED到SOCK_ESTABLISHED的完整链路实践。通过硬件协议栈架构分析、状态机全流程拆解及异常处理方案,帮助开发者构建高可靠性的嵌入式网络服务端,优化TCP连接性能与稳定性。

Jerry的专栏 1165

Unity Tutorial - Adventure Game

Unity Tutorial - Adventure Game 标签(空格分隔): unity unity_tutorial 写在前面:个人觉得,这个教程是官方教程里面的一个分水岭,教程中涉及了实际 unity 项目开发中几个特别重要的方面:Animation 、 ScriptableObject 、 Editor Scripting ,以及 C# 中的委托、事件、多态、 Lambda ...

vergram 2173

从数据同化到水文模拟:CMADS如何重塑SWAT模型的中国实践

本文探讨了CMADS数据集与SWAT模型在中国复杂地形水文模拟中的融合实践。CMADS通过高分辨率气象数据同化技术,显著提升了SWAT模型在中国特殊地理环境下的模拟精度,特别是在数据稀缺区域。文章详细分析了CMADS的技术架构、应用案例及与传统数据的性能对比,为水文研究提供了新的技术支撑。

git9versioner的博客 629

Unity3D基础知识梳理<转>

这段时间在做Unity的项目,这差不多是我的第一次实战啊~然后公司来了实习的童鞋要学Unity,但是我一向不靠谱啊,所以只能帮他们稍微梳理下基础的东西了啊,唉~学长只能帮你们到这里了~顺便就把自己这两天整理的一些基础知识分享上来了,闲话不多说~ 美术部分:        Unity的话主要还是分两块吧,第一块是美术(自己都不懂~这里允许我稍微带过一下吧~),美术的话主要包括3d模型、材

御剑江湖的专栏 4979

Palabos 并行计算与多物理场模拟实战指南

本文详细介绍了Palabos在并行计算与多物理场模拟中的实战应用。作为基于C++和LBM的开源CFD工具,Palabos通过MPI实现高效并行计算,特别适合处理复杂流体模拟问题。文章涵盖从基础安装、多物理场耦合技巧到性能优化策略,并分享工业级应用案例与调试经验,帮助开发者快速掌握这一强大工具。

4k5l6j7h8的博客 241

信息隐藏 数字图像空域隐写与分析技术的实现

【代码】信息隐藏 数字图像空域隐写与分析技术的实现。

Yungoal的博客 468

unity3d 脚本学习系列

最近使用unity3d,对其中的脚本部分进一系列总结,算是这一段时间的收获吧。 转载于:https://www.cnblogs.com/htoooth/p/3313531.html

weixin_30412577的博客 71

ISP之LSC(Lens Shading Correction)

LSC - Lens Shading Correction即镜头暗影校正。

IQ_WXY的博客 5093

【Unity3D】Unity3D技术栈

本文梳理了笔者在学习 Unity3D 的过程中,对 Unity3D 的理解和学习路线,以帮助读者循序渐进地学习 Unity3D,后续笔者仍会持续更新 Unity3D 相关技术栈,并同步到本文中。

little_fat_sheep 5万+

Test软件:Keysight二次开发_(1).Keysight软件开发概述

VISA(Virtual Instrument Software Architecture)库是Keysight提供的一种标准化的仪器控制接口,支持多种编程语言和开发环境。仪器通信:通过GPIB、USB、以太网等接口与仪器进行通信。数据采集:从仪器中获取测量数据。命令发送:向仪器发送控制命令。错误处理:处理通信过程中可能出现的错误。测试自动化是指通过编写脚本或程序来自动执行测试任务,从而提高测试效率和减少人为错误。Keysight的测试设备和仪器支持多种编程语言和开发环境,使得测试自动化变得相对容易。

2401_87715305的博客 1356

python爬虫:采集求职者简历信息并进行人才分析

通过 Python 爬虫抓取求职者简历信息并进行人才分析,可以帮助企业快速筛选和匹配人才。但在实施过程中,必须严格遵守法律法规,确保数据来源合法合规。如果需要更复杂的分析,可以结合自然语言处理(NLP)和机器学习技术,进一步挖掘数据价值。

数据知道的博客 1万+

我的世界 Unity3D MineCraft 用Unity3D制作类似MineCraft我的世界的游戏 正经梳理一下开发01

我的世界 Unity3D MineCraft 用Unity3D制作类似MineCraft我的世界的游戏 正经梳理一下开发01 原先一直认为我的世界开发起来很简单,不就是那么多方块拼接起来么。但是今年年初尝试了一下就觉得完全不是这么回事,因为当大量方块出现在屏幕上的时候就会出现效率的问题,即便你关闭光源,减少贴图的精度,或者设置什么摄像机裁剪的,也是不行的。 因为: 1 方块是动态生成的,生成

大象hector的博客 7819

PCL 计算点云包围球【2025最新版】

包围球通常用于简单排斥,因为与球体相交的方程很简单,同样重要的是,旋转一个球体并不会改变其范围。因此,当包围球用于简单排斥时,如果球体中心是对象的原点,则可以忽略对象的方向。

点云侠的博客 2068
上一篇: Unity内部脚本初级知识
下一篇: Unity3D 事件处理函数
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值