using unityEngine; using System.Collections; public class LightEdit2 : MonoBehaviour { public static bool m_bLightBtnDisable; public Light m_lLight_1; public Rect m_rLightWindowRect; public Texture m_tCloseButtonTexture; public float m_fIntensityMin;//最小值 public float m_fIntensityMax;//最大值 //控制第一个灯 public bool m_bIntensityIsOfMin;//是否最小 public bool m_bIntensityIsOfMax;//是否最大
private bool[] isChange = new bool[] { false, false }; private bool m_bIsClickLightButton; public static bool m_bIsShowLightWindowRect; // Use this for initialization void Start() { m_bLightBtnDisable = true; m_rLightWindowRect = new Rect(30, 120, 310, 80); m_fIntensityMin = 0.0f; m_fIntensityMax = 1.0f; m_bIntensityIsOfMin = false; m_bIntensityIsOfMax = false; m_bIsClickLightButton = false; m_bIsShowLightWindowRect = false; } // Update is called once per frame void Update() { } void OnGUI() { GUI.backgroundColor = Color.yellow; if (GUI.Button(new Rect(20, 10, 100, 50), "灯光设置")) { if (m_bLightBtnDisable) { Debug.Log("弹出灯光设置window窗口"); m_bIsClickLightButton = true; m_bIsShowLightWindowRect = true; LableTips.m_bIsShowTipWindow = false; LableTips.m_bIsShowMusicWindow = false; } } if (m_bIsClickLightButton && m_bIsShowLightWindowRect) { GUI.color = Color.green; m_rLightWindowRect = GUI.Window(0, m_rLightWindowRect, LightWindowEditEvent, "灯光调节面板"); }
最近在研究Unity5中的照明,为了方便大家查阅,我为Lighting面板写了个中文说明书。这里面提到的探针(Probe)暂时没有研究,以后会陆续补充。这里使用的Unity是5.4.2f2版本,参考博客及文章我写在最后。
(请点击查看大图,或者保存图片观看)
场景中设置,一是定义public权限的变量,在场景中添加灯光然后赋值给Public变量,二是Textrure,就是面板右上角那个关闭按钮,也是在场景中把之前的图片给这个变量即可
代码的控制,GUI.DragWindow(new Rect(0, 0, 10000, 10000));实现了矩形框的任意拖动效果。
灯光强弱的调节运用GUI.Toggle,通过intensity来改变大小。
直接上代码:
using unityEngine;using System.Collections;
public class LightEdit2 : MonoBehaviour
{
public static bool m_bLightBtnDisable;
public Light m_lLight_1;
public Rect m_rLightWindowRect;
public Texture m_tCloseButtonTexture;
public float m_fIntensityMin;//最小值
public float m_fIntensityMax;//最大值
//控制第一个灯
public bool m_bIntensityIsOfMin;//是否最小
public bool m_bIntensityIsOfMax;//是否最大
private bool[] isChange = new bool[] { false, false };
private bool m_bIsClickLightButton;
public static bool m_bIsShowLightWindowRect;
// Use this for initialization
void Start()
{
m_bLightBtnDisable = true;
m_rLightWindowRect = new Rect(30, 120, 310, 80);
m_fIntensityMin = 0.0f;
m_fIntensityMax = 1.0f;
m_bIntensityIsOfMin = false;
m_bIntensityIsOfMax = false;
m_bIsClickLightButton = false;
m_bIsShowLightWindowRect = false;
}
// Update is called once per frame
void Update()
{
}
void OnGUI()
{
GUI.backgroundColor = Color.yellow;
if (GUI.Button(new Rect(20, 10, 100, 50), "灯光设置"))
{
if (m_bLightBtnDisable)
{
Debug.Log("弹出灯光设置window窗口");
m_bIsClickLightButton = true;
m_bIsShowLightWindowRect = true;
LableTips.m_bIsShowTipWindow = false;
LableTips.m_bIsShowMusicWindow = false;
}
}
if (m_bIsClickLightButton && m_bIsShowLightWindowRect)
{
GUI.color = Color.green;
m_rLightWindowRect = GUI.Window(0, m_rLightWindowRect, LightWindowEditEvent, "灯光调节面板");
}
}
void LightWindowEditEvent(int windowID)
{
if (GUI.Button(new Rect(284, 2, 24, 24), m_tCloseButtonTexture))
{
m_bIsShowLightWindowRect = false;
}
GUI.Label(new Rect(10, 15, 90, 20), "环境光1");
m_bIntensityIsOfMin = GUI.Toggle(new Rect(10, 35, 30, 30), m_bIntensityIsOfMin, "弱");
m_bIntensityIsOfMax = GUI.Toggle(new Rect(240, 35, 30, 30), m_bIntensityIsOfMax, "强");
m_lLight_1.intensity = GUI.HorizontalSlider(new Rect(40, 40, 200, 30), m_lLight_1.intensity, m_fIntensityMin, m_fIntensityMax);
GUI.DragWindow(new Rect(0, 0, 10000, 10000));
if (m_bIntensityIsOfMin && !isChange[0])
{
Debug.Log("你选择了弱!");
m_bIntensityIsOfMax = false;
m_lLight_1.intensity = m_fIntensityMin;
isChange = new bool[] { true, false };
}
//是否点击 “强”开关
if (m_bIntensityIsOfMax && !isChange[1])
{
m_bIntensityIsOfMin = false;
m_lLight_1.intensity = m_fIntensityMax;
isChange = new bool[] { false, true };
}
}
}
1.打开或者新建一个unity工程
2.在场景中加入几个游戏物体
3.在资源面板中有右键添加点光源
4.添加之后会在场景资源中出现一个点光源
5.可以把光源位置先复位,方便判断位置
GameObject.Find()使用起很方便,但是它有个缺陷如下图所示,就是如果你的这shu个GameObject天生acive = false的话,路径用“/”符号隔开即1653可。
GameObject root = GameObject1.GameObject.Find()
通过场景里面的名子或者一个路径直接获取游戏对象;
我觉得如果游戏对象没再最上层,那么最好使用路径的方法,因为有可能你的游戏对象会有重名的情况。那么你用GameObject.Find()是永远也无法获取它的对象的。如果对象都获取不到,那么对象身上脚本啊 组件啊啥的都是获取不到的.Find(“GameObject/Cube”)。
GameObject root = GameObject.Find(“GameObject”)
游戏场景中灯光照明的构成
现实生活中的光线是有反射、折射、衍射等特性的。对这些基本特性的模拟一直以来都是计算机图形图像学的重要研究方向。
在CG中,默认的照明方式都是不考虑这些光线特性的,因此出来的效果与现实生活区别很大。最早期的时候,人们利用各种方式来模拟真实光照的效果,比如手动在贴图上画上柔和阴影,或者用一盏微弱的面积光源去照明物体的暗部以模拟漫反射现象等等。
然后出现了所谓的高级渲染器,用计算机的计算来代替我们的手工劳动来进行这个“模拟”的工作。在漫长的发展过程中,出现过很多很多计算方案,总体上分为这样几类:
直接模拟光线从被光源发出到最终被物体完全吸收的正向过程,也就是常说的GI(Global Illumination);
不直接模拟光线,而是反向搜集物体表面特定点的受光照强度来模拟现实照明效果,也就是常说的FG(Final Gathering);
完全不考虑光线的行为,单纯基于“物体上与其他物体越接近的区域,受到反射光线的照明越弱”这一现象来模拟模拟现实照明(的一部分)效果,也就是常说的AO(Ambient Occlusion);
将场景光照结果完全烘焙到模型贴图上,从而完完全全的假冒现实光照效果,也就是我们所说的Lightmap。
不论是GI还是FG,计算量都是非常大的,一帧图片需要几十分钟甚至几十小时来渲染,所以很难被应用在游戏设计领域。
因此在游戏设计领域,光照贴图技术依然是目前的主流方式。
由于光照贴图需要事先烘焙(baking)出来,且仅支持静态物体(Static Object),而我们的游戏场景中几乎不可能全都是静态物体,所以通常游戏场景中的灯光照明是多种照明方式的混合作用。
对于静态物体来说,大多使用光照贴图来模拟间接光的照明效果,然后加上直接光源的动态照明效果;
对于运动物体来说,则仅用直接光源的动态照明效果,或者使用光照探针来模拟间接光的照明效果。
随着技术的发展以及计算机计算能力的提高,也许在未来,我们能够直接在游戏场景中进行动态的全局光照模拟也说不定呢。新版Unity3D中就已经出现了Realtime Global Illumination,虽然这个技术还处于雏形阶段,所需要的计算量依然庞大,但确实为我们展示了一个令人激动的前景。
1. 直接照明(Direct Lighting)
Unity3D中的直接照明主要来源于各种灯光物体,而灯光物体本质上是空物体加上灯光组件。直接照明可以产生阴影,但光线不会反射、也不会折射,但可以穿透半透明材质物体。
1.1 灯光类型(Lights)
Unity3D中默认可以创建这么几种灯光:聚光灯、点光源、平行光、面积光,另外还可以创建两种探针(Probe):反射探针(Reflection Probe)和光照探针组(Light Probe Group)。
Unity中可以创建的灯光类型物体
平行光
平行光通常用来做阳光,Unity3D新建场景后会默认在场景中放置一盏平行光。平行光不会衰减。
unity_lighting04.png
Type
:灯光类型,所有类型的灯光都其实共用一个组件,本质上是一样的。Color
:灯光颜色Mode
:灯光照明模式,每种模式对应Lighting面板中一组设定Realtime
:对应Realtime LightingMixed
:对应Mixed LightingBaked
:对应Lightmapping SettingIntensity
:灯光强度Indirect Multiplier
:在计算该灯光所产生的间接光照时的强度倍乘Shadow Type
:阴影贴图的类型No Shadows
:无阴影贴图Hard Shadows
:硬阴影贴图Soft Shadows
:光滑阴影边缘(也就是阴影模糊效果)Baked Shadow Angle
:烘焙阴影的角度Realtime Shadows Strength
:实时阴影强度Resolution
:阴影贴图分辨率Bias
:阴影偏移,通常适当增加这个值来修正一些阴影的artifactNormal Bias
:法线偏移,通常适当减少这个值来修正一些阴影的artifact(不同于Bias
的使用场合)Near Plane
:阴影剪切平面,对于与摄影机距离小于这个距离的场景物体不产生阴影Cookie
:Cookie相当于在灯光上贴黑白图,用来模拟一些阴影效果,比如贴上网格图模拟窗户栅格效果Cookie Size
:调整Cookie贴图大小Draw Halo
:灯光是否显示辉光,不显示辉光的灯本身是看不见的Flare
:Flare可以使用一张黑白贴图来模拟灯光在镜头中的“星状辉光”效果Render Mode
:渲染模式Culling Mask
:点光源
点光源模拟一个小灯泡向四周发出光线的效果,点光源在其照亮范围内随距离增加而亮度衰减
unity_lighting01.png
Range
:光线射出的范围,超出这个范围则不会照亮物体聚光灯
聚光灯模拟一个点光源仅沿着一个圆锥体方向发出光线的效果,聚光灯在其照亮范围内随距离增加而亮度衰减
unity_lighting02.png
Spot Angle
:灯光射出的张角范围面积光
面积光模拟一个较大的发光表面对周围环境的照明效果,通常面积光的灯光亮度衰减很快,阴影非常柔和。
Unity3D的面积光仅在烘焙光照贴图时有效,并不像Maya的Area Lights一样能动态照亮场景。
unity_lighting03.png
Width
:面积光宽度Height
:面积光的高度1.2 阴影类型(Shadow)
Unity3D的灯光可以设置不同的阴影类型,分别是:无阴影、硬阴影、软阴影。要注意的是,不论是硬阴影还是软阴影,本质上都是用阴影贴图模拟的阴影效果,而不是真实光照而自然形成的暗色区域。
unity_lighting05..png
灯光上阴影设置部分会随着
Mode
参数的不同而变化,Realtime Lighting Mode对应的选项很多,而Baked Mode仅对应Baked Shadow Angle一项。无阴影
灯光不产生阴影,新建场景后默认生成的平行光就是无阴影的。
硬阴影
阴影边缘清晰
软阴影
阴影边缘柔和,有过渡效果
阴影质量设置
虽然我们在灯光的阴影设置中可以调节Resolution以提高阴影质量,但真正的阴影质量调节应该在Quality面板中来进行,灯光中的阴影Resolution参数默认设置是Use Quality Settings,就是从Quality面板的设定中来选择。
unity_lighting06.png
从菜单
Edit
>Project Settings
>Quality
打开Quality面板,这里可以针对不同质量等级设置不同的参数。unity_quality02.png
我们现在先不在这里对Quality面板做全面介绍,仅介绍关于阴影的那一部分设置内容:
Shadows
:在当前质量下是不渲染阴影,还是只渲染硬阴影,还是软硬阴影都渲染Shadow Resolution
:在当前质量下阴影贴图分辨率,这就对应了灯光面板中的Resolution参数。Shadow Projection
:阴影贴图的投影方式,Close Fit方式会优化近处的阴影质量,缺点是运动状态下可能会出现一些波动,Stable Fit方式不会有波动,但质量比较差Shadow Near Plane Offset
:很近处不渲染阴影Shadow Cascades
:阴影贴图叠加方式,可以是单层、2层或者4层Cascade Splits
:不同层所对应场景区域的比例分配划分我们可以看到这里的Shadow Resolution就对应了灯光面板中的Resolution参数。
unity_lighting07.png
1.3 渲染路径(Rendering Path)
Unity3D提供两种渲染路径(Rendering Path),对于初学者来说,渲染路径这个概念不是很好理解,大家可以理解成是两种不同的渲染器,分别有利弊就好了。
1.3.2 Forward
在Forward渲染路径下,每个物体会被每个光源渲染成一个“通道”,因此物体受到越多灯光的影响,其渲染次数就会越多。
Forward渲染路径的优势在于,在灯光比较少的情况下,Forward方式的渲染速度会非常快,处理透明贴图也非常快,还可以使用诸如“多重取样抗锯齿(MSAA)”这样的硬件处理技术技术。
但Forward渲染路径的渲染速度会随着灯光的增多而迅速变慢,在一些有很多灯光照明的特定场景中(比如高科技室内环境)并不适合使用Forward渲染路径。
1.3.1 Deferred
使用Deffered渲染路径,渲染时间不会随着灯光的增多而提高,而是会随着受整体光照影响区域的扩大而提高(也就是说,场景中越多像素被照亮,渲染速度就越慢,但全屏被照亮的情况下,灯光设置复杂度不会进一步影响渲染速度了)。
Deffered渲染路径在整体上需要更多的计算量,对于一些移动设备,Deffered渲染路径还不能支持。
2. 间接照明
间接照明有这么几种来源:
天光,也就是环境光(Ambient Light),特指来自于天空的漫反射。在Unity3D中可以继承“天空球”的颜色作用环境光颜色,也可以自行指定环境光颜色。
反射光,特指天空漫反射之外的所有环境漫反射。在Unity3D中主要通过光照贴图或灯光探针来模拟。
自发光物体。在Unity3D中自发光物体本身的亮度仅使用颜色来模拟,自发光物体对于环境的影响则通过光照贴图或灯光探针来模拟。
2.1 天空盒(Skybox)与环境光(Ambient)
Unity3D的天空盒类似于Maya中的天空球的概念,都是在场景外围生成一个封闭并正面向内的环境,用来模拟天空的颜色和照明效果。但Unity3D的天空盒采用的是Box形状的天空环境而非球形,用6张不同的贴图而非1张全景贴图来作为天空贴图。
Skybox的贴图都是高动态颜色深度的
.exr
图片格式(也就是俗称的HDR图片)。最好不要使用.jpg
或者.png
这种传统8位色深的图片来做Skybox,除非我们确认不需要对场景进行贴图烘焙(这样的话天空盒就只起到环境贴图的作用了)。简单的场景(或者刻意追求一种纯粹的效果)可以不使用Skybox而使用纯色天空,甚至游戏不需要看到天空的,可以直接设置成None。
天空盒对于场景的照明影响主要来源于其对于环境光的影响。天空盒贴图所产生的环境光肯定比纯色环境光要更为丰富,也更为契合天空颜色一些。
环境光所需要的计算量很小,所以是很有效的照明手段,大家不要忽视了。
2.2 光照贴图(Lightmap)与烘焙(Baking)
简单来说,Lightmap就是用贴图来模拟全局照明的效果,但当今游戏引擎的Lightmap的功能却远远不是一张贴图那么简单。按照官方的说法,Lightmap中不仅可以包括物体表面的光照颜色信息(传统的Lightmap功能),还可以包括物体和物体之间的光线渗透关系信息(新版中的Realtime Lighting功能),也就是说,动态光源也可以对于烘焙了光照贴图的静态场景物体产生正确的光照。
光照贴图需要将所有参与的场景物体的UV重新排列组合成互不重叠且尽量少形变的方形结构,然后再把光照信息烘焙到一张或几张较大尺寸(最大到4K)的贴图中。这些烘焙好的贴图会被储存在场景文件所在目录下与场景文件同名的子目录中,所以烘焙光照贴图之前需要保存场景。
光照贴图烘焙参数设置
unity_lighting09.png
Environment:关于环境的参数设置
Skybox Material
:设置天空盒材质Sun Source
:设置太阳,可以指定一个平行光作为太阳,然后该平行光的旋转角度会影响其亮度和颜色Environment Lighting:关于环境光照的设置
Source
:环境光照来源-
Skybox
:来源于天空盒-
Gradient
:来源于一个从地平线到穹顶的颜色渐变-
Color
:来源于单色Intensity Multiplier
:环境光照明强度强化Ambient Mode
:环境光照明模式-
Baked
:烘焙在光照贴图中-
Realtime
:实时Environment Reflections:关于环境反射的设置
Source
:环境反射来源-
Skybox
:来源于天空盒-
Custom
:来源于一个自定义的Cubemap(方盒贴图)Resolution
:环境反射贴图分辨率Compression
:是否压缩环境反射贴图Intensity Multiplier
:环境反射强度强化Bounces
:环境反射计算次数Realtime Lighting:关于实时光照烘焙的设置
Realtime Global Illumination
:是否进行实时光照烘焙Mixed Lighting:关于混合光照烘焙的设置
Baked Global Illumination
:是否进行混合光照烘焙Lighting Mode
:光照模式Baked Indirect
Distance Shadowmask
Shadowmask
Subtractive
Lightmapping Settings:关于光照烘焙的通用设定
Lightmapper
:选择光照烘焙器Enlighten
:这是常用的一种烘焙器Progressive (Preview)
:这是新版的一种烘焙器,还处于预览状态,它会先烘焙摄影机可见区域,再烘焙其他区域,所以预览较快Indirect Resolution
:间接光照分辨率(每单位长度多少体素(texel)),数值越高,光照细节越高Lightmap Resolution
:光照贴图分辨率(每单位长度多少体素),通常设置为Indirect Resolution
的10倍左右Lightmap Padding
:修正两个物体的Lightmap之间的距离,以避免颜色渗透Lightmap Size
:光照贴图大小(最大4096)Compress Lightmaps
:是否压缩光照贴图Ambient Occlusion
:是否烘焙环境光遮罩Final Gather
:是否对最后一次GI光线反射后的光照结果再进行一次FG计算,勾选上会有较好的质量表现,但烘焙时间会增加Directional Mode
Indirect Intensity
:间接光照的强度Albedo Boost
Lightmap Parameters
:设置详细的光照贴图参数(可以使用几个默认值,或者创建新设置,应该是给熟手用的吧)Other Settings:其他设置
Fog
:添加场景雾效Color
:雾效颜色Mode
:雾效衰减模式Density
:雾效密度光照贴图的烘焙(baking)是很需要时间的,新版Unity3D提供了自动烘焙的功能:
Auto Generate
选项,可以让我们在调试场景的时候无需频繁手动点击Bake按钮,但自动烘焙的结果并不会被储存起来,所以最终发布前还是需要手动烘焙光照贴图的。定义光照贴图比例
既然所有的场景物体都被Pack成一个大的贴图,那么一个多边形面片上的光照信息精度就受限于这个多边形面片所对应的UV在贴图中所占据的面积大小了。出于场景优化考虑,我们当然希望将有限的光照贴图面积尽量多的分配给更需要的物体咯,所以Unity3D在Mesh Render组件中提供了修改物体所占光照贴图比例的参数:
unity_lighting10.png
Scale In Lightmap
就是控制该物体的UV在Lightmap的重排中比例缩放的,数字越小占比越少。2.3 灯光探针(Light Probes)
光照烘焙对于动态物体(Dynamic Object),也就是没有被设置成Lightmap Static的物体来说都是不起作用的,如果希望动态物体也能被正确的照明,则需要创建Light Probe Group。
Light Probe可以被认为是在场景中的一个小“光源”,而多个Light Probe组成的网络,就是Light Probe Group。这些小光源通过烘焙得到场景中该点的亮度信息,然后整个网络用这个信息来照明动态物体。
同一时间内只会有最靠近动态物体的那些Probes会起作用,而且Light Probe离运动物体越近,其照明效果越强。我们可以根据场景光照环境特征来设置合适的Light Probe Group。
为场景添加Light Probe Group可以很好的将动态物体与静态场景融合,尤其是在光照环境复杂的室内场景中,尤其需要添加Light Probe Group。
3. 如何提高图像的渲染质量
Unity3D中图像质量是由很多因素共同决定的,而且默认的参数设置常常都不是最佳的。而我们在制作游戏的时候,需要在游戏运行效率和游戏画面质量上做出选择。
有些游戏(比如2D游戏)的游戏画面基本与渲染质量无关,这时候就可以关闭一些影响性能的功能或选项来提高运行效率。
但有些游戏(比如3D游戏,或者仿真应用如虚拟楼盘效果图之类)对于图像渲染质量有较高要求,我们也需要知道可以通过哪些手段来增强画面效果,同时明白这样做会牺牲多少运行性能。
设置质量等级(Quality Level)
Unity3D允许用户设置多个质量等级,并在各个等级中运用不同的质量参数,前面讲阴影的时候涉及过这方面的内容。
选择渲染路径
简单来说,Deferred渲染路径的图像质量比较高,但Forward渲染路径在灯光不多的情况下速度比较快。
阴影质量
阴影出现Artifacts的时候请调整
Bias
参数和Normal Bias
参数。复杂场景的阴影质量需要手动调整
Cascade Splits
参数中多个层的占比,以保证近处阴影有足够的质量。光照准确性
使用反射探针(Reflection Probe)
Unity3D中并没并真实的Raytrace反射,而是通过反射贴图来模拟所有的反射效果。
如果我们在场景中放置一个非常强反射的小球,我们就能看到这个小球上实际反射的是我们的Skybox,完全不会反射场景物体。这样一来不仅影响到场景中反光物体的反射正确性,同时也会严重影响整体场景的光照准确性。
我们可以为场景添加
Reflection Probe
来矫正不正确的反射贴图。Reflection Probe可以看做是一个带有6个摄影机的点,它会渲染该点的6个方向(前后左右上下),将渲染结果拼成一个Cubemap,并应用给一个特定方框范围内的所有物体作为反射贴图。
对于比较复杂的环境,比如有多个区域的大房间,我们可以放置多个Reflection Probe并手动设置其影响范围。
unity_reflect_probe.png
Reflection Probe默认不会计算动态物体,仅计算烘焙物体,我们可以修改属性让其将动态物体也包括在内,同时还可以修改属性为
Every Frame
使其每帧更新以准确反射动态物体的运动过程,还可以增加Lighting Setting中的Reflection Bounces提高反射次数(这样就不会出现强反射物体在另一个反射物体中是黑色的情况了)。但要注意,这些修改都会占用更多的系统资源,尤其是每帧更新反射贴图这样的设置。4. 如何提高烘焙效率
烘焙效率虽然不影响最终游戏的表现,但对我们制作过程有很大的影响。没人会希望每次修改了场景布局或者灯光布局之后都要花费几个小时甚至几十个小时的时间来烘焙光照贴图。
一个小技巧是不要将所有物体都设置成Lightmap Static参与光照贴图的烘焙。很多细碎的物体(比如地上的小碎石)并不需要很精确的间接光照效果,而且也可能根本没有足够的光照贴图精度来对应这些细碎物体,这时候用灯光探针可能比用光照贴图更有效率。
作者:shimmery
链接:https://www.jianshu.com/p/7594b044e6dc
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
预览的时候,把shader改为不接受灯光的shader,会亮一些,这个直接调亮度是不行的,因为是默认灯光,不可调
你指的是Unity环境灯光还是灯光游戏对象?
环境灯光在Windows——lighting——settings中设置。
灯光游戏对象。调出inspector面板即可。
通过下面的菜单可以打开。
相关问题推荐
还是要学好编程基础呀如果你觉得编程很苦难 不一定要从c#开始学 学学js flash as等等 有个梯度就好多了如果要用好unity 不会编程那是不行的 学习的过程中都有个头疼的过程 记住 头越痛 代表你要接受的东西越多 坚持 你的大脑在和知识兼容中:D...
可以先思考学习的目的,是什么因素在驱动你。是完成一款作品?进入某个行业?还是探究某类问题?否则和技术相关的知识浩如烟海,很容易迷失在细枝末节上。而要找到动力源头。个人的经验,就是关注一些和自己同方向,同类型的创作者。他们输出的作品会激励你,...
可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...
Shader Unlit/Test{Properties{_MainTex(MainTex,2D)=white{}_MainColor(MainColor,COLOR)=(1,1,1,1)_AddTex(AddTex,2D)=white{}_Maxset(Max,Range(0.1,1.0))=0.1}SubShader{Tags{RenderType=Transparent Queue=Tran...
文章主要为大家详细介绍了Unity Shader实现水波纹效果,文中示例代码介绍的非常详细具体代码实现如下:Shader Custom/shuibowen{ Properties{ _MainTex(Base (RGB),2D)=white{} _distanceFactor(Distancefactor,float)=1 _timeFactor(time factor,float)=...
策划的最基本的原则就是:改进缺点,做别人没有做到的。无论游戏策划还是其它策划都是一样! 游戏策划的第二个原则:放飞思想。也许你认为我是说策划们应该充满想象力,能想一些匪夷所思的东西!对不起。不是这意思!一个合格的策划不是为了发泄自己的...
可以多玩一些其它的游戏,看一些科幻电影等,寻找灵感。
游戏架构与设计不纯粹是一门科学,它不需要提出假设或探究真理,也不被逻辑或正规方法的严格标准所束缚。游戏的目的就是通过玩来获得娱乐,因此游戏设计即需要艺术家一样的创造力,也需要工程师一样的精心规划。游戏设计是一门手艺,就像好莱坞的电影摄像或服...
void Update(){ transform.rotation = Quaternion.Euler(Vector3.zero);}可以试一下,保证物体x轴和z轴为0就可以使其一直垂直。
界面左右移动、上下移动。。本质都是:手指滑动。。。可以参考这些:https://www.cnblogs.com/coldcode/p/5362537.htmlhttps://blog.csdn.net/totosj/article/details/80112852https://blog.csdn.net/zcc858079762/article/details/85253120...
首先新建一个C#脚本,命名为MyFollow,然后把以下代码粘贴进去,保存:AخA 1using UnityEngine;2using System.Collections;3public class MyFollow : MonoBehaviour4{5 public float distanceAway = 5; // distance...
安装高通的Vuforia插件即可。
不可以,只能一个工程打一个包。
Edit->Project Settings->Graphics 找到Shader Stripping 中fog mode设置为custom(原来是Automatic),然后选中你想要的模式,最后重新打包就ok
用到的插件:System.Drawing.dllSystem.Windows.Forms.dllSystem.Deployment.dll(运用基于.Net4.x的dll打包时,需要用到该dll,否则会报错)代码如下:using System;using System.Runtime.InteropServices;using UnityEngine;using UnityEngine.UI; p......
如下图,设置为none,然后删掉滑动条就可以了。