unity容易上手吗,代码敲得多吗?

2020-04-28 13:17发布

10条回答
小李
2楼 · 2020-04-28 13:34

不容易,多.......

粘一篇文:

Unity代码结构

  工程结构是约束整个unity3d工程的文件存放位置。想想你有一个大型的项目文件柜,而这些文件就好比一堆项目资料,对比一个整理完善、有序存放的文件柜,和一个文件互相交错,存放无序的文件柜,我相信你一定会选择第一个,因为第二个对于你来说就是噩梦般的存在。

  Unity中的脚本都是继承自MonoBehaviour。

  一、基础函数:

  创建脚本就默认的update、start方法:(这些官方的文档都是有的)

  Start:Update函数第一次运行前调用,一般用于游戏对象的初始化。比如GetComPonent之类。

  Update:每帧调用;一般用于更新场景和状态,物理相关不建议在此处处理。

  Awake:脚本实例对象被创建时调用,也可以用于游戏对象的初始化,但是Awake是在所有脚本的Start之前执行。

  FixedUpdate:固定间隔执行,一般用于物理状态更新。

  LateUpdate:每帧执行,在Update之后。一般和摄像机有关的状态放在这里处理。

  现在我来简单测试下:我在场景中添加了两个Cube,分别添加了Script1,Script2,下面是执行log,可以看到Awake是在所有脚本之前调用的。

  二、事件响应函数:

  MonoBehaviour中的事件响应函数都是已On开头的,比如:鼠标事件,脚本激活、销毁,碰撞等。

  OnApplicationFocus:当玩家获得或失去焦点时发送给所有游戏物体。可以作为协同程序,在函数中使用yield语句即可

  OnApplicationPause:当玩家暂停时发送到所有的游戏物体。可以作为协同程序,在函数中使用yield语句即可。

  OnApplicationQuit:在应用退出之前发送给所有的游戏物体。当用户停止运行模式时在编辑器中调用。当web被关闭时在网络播放器中被调用。

  OnBecameInvisible:当renderer(渲染器)在任何相机上都不可见时调用OnBecameInvisible。

  OnBecameVisible:当renderer(渲染器)在任何相机上可见时调用OnBecameVisible。

  OnCollisionEnter:当此collider/rigidbody与另一个rigidbody/collider接触时调用。

  OnCollisionExit:当此collider/rigidbody停止触发另一个rigidbody/collider时。

  OnCollisionStay:当此collider/rigidbody触发另一个rigidbody/collider时,OnCollisionStay将会在每一帧被调用。

  OnConnectedToServer:当你成功连接到服务器时,在客户端调用。

  OnDisconnectedFromServer:失去连接或从服务器端断开时在客户端调用。

  OnFailedToConnectToMasterServer:当连接主服务器出现问题时在客户端或服务器端调用。

  OnControllerColliderHit:在移动的时,当controller碰撞到collider时OnControllerColliderHit被调用。

  OnDestroy:脚本销毁时调用。

  OnDisable:对象禁用或者取消激活时调用。

  OnEnable:对象变为可用或激活状态时此函数被调用。

  OnDrawGizmosSelected:如果想在物体被选中时绘制gizmos,执行这个函数。

  OnGUI:渲染和处理GUI事件时调用。

  OnJointBreak:当附在同一对象上的关节被断开时调用。

  OnLevelWasLoaded:一个新关卡被载入时此函数被调用。

  OnMouseDown、OnMouseDrag、OnMouseEnter、OnMouseExit、OnMouseOver、OnMouseUp:鼠标事件。

  OnMouseUpAsButton:只有当鼠标在同一个GUIElement或Collider按下,在释放时调用。

  OnTriggerEnter:当Collider(碰撞体)进入trigger(触发器)时调用OnTriggerEnter。

  OnTriggerExit:当Collider(碰撞体)停止触发trigger(触发器)时调用OnTriggerExit。

  OnTriggerStay:当碰撞体接触触发器时,OnTriggerStay将在每一帧被调用。

  三、默认组件

  组件对应的变量名是组件名的小写。

  Transform:对象的位置,角度,缩放。变量名:transform

  Rigidbody:刚体属性。

  Render:渲染物体模型。

  Light:灯光属性。

  Camera:相机属性。

  Collider:碰撞体属性。

  Animation:动画属性。

  Audio:声音属性。

  四、组件获取函数

  获取组件的方法由于比较耗时,所以如果你在update修改transform的话,一般可以先在Start中获取这个组件的引用,然后在update中使用引用去修改。

  比如获取上面例子cube1的script1脚本:

  [c-sharp]Script1 spt1 = GetComponent( );[/c-sharp]

  下面是获取组件的函数:

  GetComponent:获取组件。

  GetComponents:获取组件列表。

  GetComponentInChildren:返回Type类型组件,在GameObject或它的任何子物体使用深度优先搜索,仅返回激活的组件。

  GetComponentsInChildren:在GameObject或任何它的子物体,返回全部Type类型组件。

  五、获取场景中的游戏对象

  同样和获取组件一样,该方法比较费时,一般在Start中获取引用。

  [c-sharp]

  GameObject cube1 = GameObject.Find(“Cube1”);

  GameObject cube1 = GameObject.FindWithTag(“tag_cube1”);

  [/c-sharp]

  除了上面的方法,也可以使用public对象,直接使用面板拖拽赋值。

  ————————————————

  版权声明:本文为CSDN博主「DaXian-Will」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

  原文链接:https://blog.csdn.net/qq_26440221/java/article/details/77172776



Mantra
3楼 · 2020-04-28 14:18

上手容不容易每个的评价都不一样,自己下载一个去试一下就可以了,反正也不要钱。你想要的任何一个逻辑几乎都是代码。

梅向南
4楼 · 2020-04-28 21:45

相对于UE4使用C++编程,Unity使用C#编程简单很多,完成任何一款游戏产品代码都是少不了的。

Transform
5楼 · 2020-04-29 00:08

Unity引擎是游戏开发主流,如果太难用的人也不会这么多。用它开发的游戏成本也会更高。现在市面上大多游戏都有使用它开发的。不是太难,但是你想要学的精就需要多花时间和精力啦。加油~

Ross
6楼 · 2020-04-29 09:02

unity和其它游戏开发软件相比较,容易上手,但不管哪一种游戏开发引擎,代码都要敲得多,只有这样你的技术才会熟练.

男孩无衣
7楼 · 2020-04-29 09:09

2楼的回答是正确的。


开发游戏必须使用代码,代码是驱动逻辑的最优途径。


针对这个问题,可以将代码分为两类:

第一类是那种可以套用到任何位置的“套路代码”,这些代码只要明白含义,知道功能,使用的时候直接复制粘贴都可以。这类代码是非常简单的,经过较短的时间学习即可掌握。


第二类是创新性代码,在“套路代码“的基础上进行组合创新,实现套路之外的功能。这需要较强的编程思维和创新能力,是创造力的体现。 相对来说比较困难。

老杜
8楼 · 2020-04-29 15:47

相对别的引擎还是比较容易上手的。现在Unity也有蓝图工具了,playMaker,连流程图就可与做游戏。不过功能有限,最终还是的敲代码

花轮同学
9楼 · 2020-04-29 19:06

首先,Unity容易上手,可以说是游戏引擎中最容易上手的游戏制作引擎了。

第二,您问代码敲的多不多,答案是肯定多。游戏中的你能看到的很多东西都需要通过游戏代码进行控制。

其实您的本意是:我想学Unity但是对代码兴趣不大或者没有底气写代码,这点就是完全多虑了。Unity之所以上手简单就是因为他的代码相对来说理解起来比较容易。

其次,如果对写代码不感兴趣可以学游戏策划,无需写代码仍然可以做游戏。偏向设计部门岂不美哉?

相关问题推荐

  • 回答 6

    第一步:对着Assets点击右键,选择ExportPackage第二步:选择场景文件以及和场景相关的资源或者素材,然后点击Export第三步:给导出的资源取名,并且选择要保存的位置即可

  • 回答 87
    已采纳

    玩游戏玩的很好,说明你对于游戏里面的规则、剧情设置还是比较了解的,对于从事游戏相关岗位来说也是优势之一。但是学习游戏开发还是要对游戏开发的工作内容做进一步的了解,游戏开发涉及代码较多,可以通过进一步的了解,判断自己是否适合学习这个方向,另外...

  • 回答 11

    游戏开发入门不难。后期发展需要你有丰富的奇思妙想。游戏开发肯定是培训好,自学学得不系统,并且不易发现自身薄弱之处。游戏开发的学习时长还是要看你自己对知识与技术的掌握能力,一般来说,游戏开发的学习时长大约在五个月左右。...

  • 回答 18

    个人觉得如果有一定的技术基础的话还是可以考虑自学,如果零基础的话可能会有些难度

  • 回答 10

    问题还是出在粒子的sorting fudge。在unity的2d模式下,游戏本身的背景相当于是sorting fudge的0,当你把粒子的sorting fudge设为0以上的时候,粒子就都会被背景盖住。所以在3d模式下给alpha正值来给add垫底的话,到了2d模式下就会通通不显示。所以遇上这样的...

  • 回答 17

    虚幻4引擎,你会看到和平精英加载页面左下角有这个图标。

  • 回答 8
    已采纳

    转载知乎上的两位答友的回答,各有道理。作者:风小锐链接:https://www.zhihu.com/question/322249959/answer/675883379来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。未来Unity有可能出现3A大作吗? 有可能。基于Unity已...

  • 回答 11

    在Assets文件夹里面.点击右键Create/Material即可以创建材质球

  • 回答 23

    可以让模型师直接作出这样的形状,如果用纯Unity制作,就要用基本游戏对象拼接了,包括楼梯,城堡,都可以拼接出来。正常情况不会这样做,因为不够精美,都是建模师来实现,毕竟Unity不属于专业的建模软件,侧重于实现功能。...

  • 回答 18

    粒子系统由粒子发射器、粒子动画器和粒子渲染器三部分组成,主要用于游戏场景中一些特殊效果,如水、烟火等等

  • 回答 18

    首先,Python开发游戏非常尴尬,原因是没有好用的游戏开发库。Python开发游戏仅推荐PyGame,PyGame是对多年以前很流行的游戏开发库——SDL的封装。但是说实话功能太简陋了,做个动画都得考虑刷新的问题。楼主要做简单小游戏,只需要画一两周熟悉Unity引擎,然...

  • 回答 9

    1.标记水体碰撞的位置2.计算水波的传递 通过波动公式,3D或者2D 波动公式都行3.水面顶点采样波动传递结果计算结果做顶点Y轴偏移

  • 回答 15

    Unity3D中两种阴影的实现传统的ShadowMapShadowMap说起来十分简单,把摄像机和光源的位置重叠,那么场景中该光源的阴影区域就是那些摄像机看不到的地方,主要应用在前向渲染路径中。具体实现分以下几个步骤:如果有平行光开启了阴影,Unity就会为该光源计算它...

  • 回答 18

    Doozy UI是Unity UI视图层的框架,本身使用的还是UGUI的组件,但提供了一套强大的UI管理功能,可以很方便的实现一些炫酷效果,方便的UI系统管理与事件传递机制。

  • 回答 12

    Unity3d更好,因为U3D占有的市场更大,目前cocos大都是用来开发棋牌游戏的,在这方面它有着巨大的优势。而Unity3d既可以用来开发大型3D游戏,也可以用来开发vr游戏、vr应用,这是比较不错的,未来有着巨大的前景。另外ue4也是个不错的选择,近年来用ue4开发的...

  • 回答 11

    当Unity 需要做热更新的时候(2013年开始),而普通的C#又做不到的时候,而对于游戏行业来说Lua脚本热更新已经是很成熟的方案,自然Lua 热更新就成为了Unity热更新的首选。

没有解决我的问题,去提问