c# unity3d 生成ipa怎么让生成的小怪不重叠

〔原创〕使用C#写u3d的脚本需要注意的问题【unity3d吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:87,443贴子:
〔原创〕使用C#写u3d的脚本需要注意的问题收藏
译之:&...&ipts_in_Csharp.html&&&&&&&Writing&Scripts&in&C#&&&&&&&使用C#写脚本&&&&&&&&Apart&from&syntax,&there&are&some&differences&when&writing&scripts&in&C#&or&Boo.&Most&notable&are:&&&&&&&&除了语法外,使用C#或Boo会有一些差别,最明显的是:&&&&&&&&1.&Inherit&from&MonoBehaviour&&&&&&&&继承之MonoBehaviour类&&&&&&&&All&behaviour&scripts&must&inherit&from&MonoBehaviour&(directly&or&indirectly).&This&happens&automatically&in&Javascript,&but&must&be&explicitly&explicitly&inside&C#&or&Boo&scripts.&If&you&create&your&script&inside&Unity&through&the&Asset&-&&Create&-&&C&Sharp/Boo&Script&menu,&the&created&template&will&already&contain&the&necessary&definition.&&&&&&&&所有的行为脚本代码必须继承之MonoBehaviour类(直接或间接)。如果使用的是javascript的话会自动(隐性)的继承,如果使用的是&C#或Boo就必须明确地指定其继承于MonoBehaviour。如果你是在u3d中通过“Asset-&Create-&C&Sharp&Script/Boo&Script”来创建了脚本代码文件的话,u3d的脚本创建模板将会提前将相关继承语句定义在脚本代码文件中。&&&&&&&&public&class&NewBehaviourScript&:&MonoBehaviour&{...}&&&&&//&C#&&&&&&&&class&NewBehaviourScript&(MonoBehaviour):&...&&&&&&#&Boo&&&&&&&&2.&Use&the&Awake&or&Start&function&to&do&initialisation.&&&&&&&&使用Awake或Start方法进行初始化。&&&&&&&&What&you&would&put&outside&any&functions&in&Javascript,&you&put&inside&Awake&or&Start&function&in&C#&or&Boo.&&&&&&&&,你(需要)在C#或Boo在使用Awake或Start方法。&&&&&&&&The&difference&between&Awake&and&Start&is&that&Awake&is&run&when&a&scene&is&loaded&and&Start&is&called&just&before&the&first&call&to&an&Update&or&a&FixedUpdate&function.&All&Awake&functions&are&called&before&any&Start&functions&are&called.
&&&&&&&&Awake和Start之间的区别在于:Awake是当一个场景调入过程完成后会自动运行,而Start则是会在Update或FixedUpdate方法被第一次调用之前被运行。所有的Awake方法运行的优先级会高于任意的Start方法。&&&&&&&&3.&The&class&name&must&match&the&file&name.&&&&&&&&(文件中)主类名必须与文件名相同。&&&&&&&&In&Javascript,&the&class&name&is&implicitly&set&to&the&file&name&of&the&script&(minus&the&file&extension).&This&must&be&done&manually&in&C#&and&Boo.&&&&&&&&在javascript脚本文件中,u3d虽然没有明确地定义主类,但事实上,u3d已经隐性地自动定义了主类,并将类名设置为等于脚本文件名(不包括扩展名)。&&&&&&&&如果使用的是C#a或Boo脚本,那就必须得手动的将主类名设置为与文件同名。&&&&&&&&4.&Coroutines&have&a&different&syntax&in&C#.&&&&&&&&使用C#实现协同,在语法上会有一处不同。&&&&&&&&Coroutines&have&to&have&a&return&type&of&IEnumerator&and&you&yield&using&yield&return&...&;&instead&of&just&yield&&&&&&&&(U3D中的)协同会(同时)用一个属于IEnumerator接口类型(枚举)的返回值和你使用的yield&返回值...;来替代yield......;&&&&&&&&如下面代码:&&&&&&&&using&System.C&&&&&&&&using&UnityE&&&&&&&&public&class&NewBehaviourScript&:&MonoBehaviour&{&&&&&&&&&&&&&&&&//&C#&coroutine&&&&&&&&&&&&&&&&IEnumerator&SomeCoroutine&()&{&&&&&&&&&&&&&&&&&&&&&&&&//&Wait&for&one&frame&&&&&&&&&&&&&&&&&&&&&&&&yield&return&0;&&&&&&&&&&&&&&&&&&&&&&&&//&Wait&for&two&seconds&&&&&&&&&&&&&&&&&&&&&&&&yield&return&new&WaitForSeconds&(2);
&&&&&&&&&&&&&&&&}&&&&&&&&}&&&&&&&&5.&Don't&use&namespaces.&&&&&&&&不要使用命名空间。&&&&&&&&Unity&doesn't&support&placing&your&scripts&inside&of&a&namespace&at&the&moment.&This&requirement&will&be&removed&in&a&future&version.&&&&&&&&U3D目前不支持你在脚本中使用命名空间,这个需求会在未来的版本中实现。&&&&&&&&6.&Only&member&variables&are&serialized&and&are&shown&in&the&Inspector.&&&&&&&&只有(public公有的)成员变量是可以在U3D程序的Inspector栏中会被以序列形式显示出来&&&&&&&&Private&and&protected&member&variables&are&shown&only&in&Expert&Mode.&Properties&are&not&serialized&or&shown&in&the&inspector.&&&&&&&&私有类型(private)和成员类型(protected)变量只能在专家模式(Expert&Mode)下可见,(而且)属性(Properties)&&&&&&&&7.&Avoid&using&the&constructor.&&&&&&&&避免使用构造函数&&&&&&&&Never&initialize&any&values&in&the&constructor.&Instead&use&Awake&or&Start&for&this&purpose.&Unity&automatically&invokes&the&constructor&even&when&in&edit&mode.&This&usually&happens&directly&after&compilation&of&a&script,&because&the&constructor&needs&to&be&invoked&in&order&to&retrieve&default&values&of&a&script.&Not&only&will&the&constructor&be&called&at&unforeseen&times,&it&might&also&be&called&for&prefabs&or&inactive&game&objects.&&&&&&&&不要通过构造函数来初始化变量。这些工作可以使用第2条中的Awake方法和Start方法来替代(换句话来说就是在u3d中,Awake方法和&Start方法是每个脚本文件类中默认的构造函数)。U3D甚至可以在标准编辑模式下就调用它们。它们通常是直接汇编在脚本中,因为构造函数需要检索默认脚本变量用于引用。(u3d)在任意的时候不光可以调用构造函数,还可能会调用预设(物体)或未被唤醒的游戏物体。&&&&&&&&In&the&case&of&eg.&a&singleton&pattern&using&the&constructor&this&can&have&severe&consequences&and&lead&to&seemingly&random&null&reference&exceptions.&&&&&&&&实例化(C#脚本文件)时,单脚本文件状态下使用(自定义的)构造函数(可能)会导致严重的后果,并且会产生引用为空的异常。&&&&&&&&So&if&you&want&to&implement&eg.&a&singleton&pattern&do&not&use&the&the&constructor,&instead&use&Awake.&Actually&there&is&no&reason&why&you&should&ever&have&any&code&in&a&constructor&for&a&class&that&inherits&from&MonoBehaviour.&&&&&&&&所以,如果你实例化C#脚本文件(即运行C#脚本文件。这是c#程序运行的基本方式,详细内容可以从C#专门的教材中了解),单脚文件不要使用(自定义的)的构造函数,直接使用Awake方法替代即可,实在没有理由为一个继承之MonoBehaviour的(文件)类写任何的(构造函数)代码。
百度大神啊,把我文本搞什么样了......
快试试吧,可以对自己使用挽尊卡咯~◆◆
很好!!!!
快试试吧,可以对自己使用挽尊卡咯~◆◆
u&&好像走不动了,未老先衰了。
u3d不错,正在努力学习~~~
快试试吧,可以对自己使用挽尊卡咯~◆◆
问一下,如何让Uniyt支持C#?听网友说要拷贝一个文件,是什么文件?拷贝到哪里?编程和编译的时候怎么使用?
新手路过,请教下Uniyt3D怎么把文件做成EXE文件的游戏?我想知道的是前期什么物理碰撞什么脚本都已经做完了后怎么生成EXE游戏文件
unity自己支持C#的啊
问一下,怎么让unity在网络上部署啊
这个很好、帮助很大、、
欢迎加入Unity3D开发QQ群:(包括音视频及三维引擎交流)
想了解更多关于unity3d的信息,可以到这个网站找专业老师咨询一下!
良知塾专门解决unity3D的问题,有问题的同学可以进群:
都是自己纯翻译的吗
看来我还是用java好了,第一方便,好多东东都内置了,第二C#连构造函数都不能写,而我的习惯是建立个类第一件事就是写构造函数
应用吧活动,
JS党路过……
unity可以用unityscript写,也可以用c#来写。编辑器默认选asset-》syn monodevelop可以打开mono develop开源编辑器,和vs差不多。但是好处是可以断点调试。初学者先把值类型,引用类型搞清楚,然后要懂得基本语法,常用容器,如数组链表字典**,掌握几种容器算法。之后掌握几种类库:system,string,io。多线程threading库和。net库如有精力也学了吧。学好向量,学点基本的图形学,就可以对着unity官方文档的例子一点一点尝试了。骨骼动画的原理,反向动力学也得会。WWW类必须完全掌握。assetbundle必须掌握。texture2d,shader,material,camera类等都是常用类。建议将文档中script部分从头至尾读几遍。unity4里还有音频分析,可以做出根据音律显示震荡高度。以及3d声音,都在audio,audiosource,audio lisner那里。physics,collidor,协同程序必须掌握(协同程序阻塞,多线程不阻塞,但多线程不能同时调用unity库函数,不是线程安全的)建议学习曲线:熟悉编辑器-》熟悉常用脚本-》研究。net类库
登录百度帐号温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
目前在北京搭配家工作,负责家装软件的研发工作
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
此处,因为我从事unity3d开发也不过半年时间,对于3d模型的理解还很肤浅,故而此处,我也只能对着unity3d来思考,我渲染那一个模型需要哪些信息。兴许等工作闲暇之后,再深层次分析fbx文件,再给出详细的3d模型的数据结构。 我们首先在unity中创造一个cube,然后查看其属性。我们看到其存在的组件有Transform、MeshFilter、MeshRender。 那我们依次分析。 Transform:
我们需要关注的属性包括: 1)表征子变换个数的childCount 3)&表征相对父物体的空间角信息localEulerAngles 4)表征相当父物体的空间位置信息localPosition 5)表征相对父物体的缩放信息localScare 6)表征相互世界坐标系的空间角信息eulerAngles,rotation 7)表征相对世界坐标系的位置信息postion 8)表征相对世界坐标系的缩放信息lossyScale 9)表征从自身坐标系到世界坐标系转换的矩阵localToWorldMatrix 10)表征从世界坐标系到自身坐标系转换的矩阵worldToLocalMatrix 11)表征自身坐标系的X方向right 12)表征自身坐标系的Y方向up 13)表征自身坐标系的Z方向forward 14)表征父变换信息parent 本文讨论的为单物体信息,从中选取我们需要关注的信息,梳理出来:postion、rotation、localScare(对于无父物体时,该变量表征其相对于世界坐标系的缩放,之所以不选择lossyScale是因为彼属性为只读的。转换矩阵信息无需存储,会自动重新计算。) 于是我们得到第一批需要存储的信息:位置信息、空间角信息、缩放信息。 MeshRenderer:
我们看到MeshRenderer其本身不存在任何状态性成员,均为直接继承于其父级Renderer。Renderer的代码如下&
我们查看其具有set类的属性(只能get的不会具有状态记忆功能,仅仅是从其他状态成员上计算所得而已。) 1)表征是否投射阴影的标志castShadows 2)表征是否启用的标志enabled。(很多人喜欢问如果隐藏一个物体,这个就是隐藏物体的开关) 3)表征应用到该渲染器的光照图的索引lightMapIndex 4)表征应用到该渲染器的光照图的位置以及偏移lightMapTillingOffset(Vertor4) 5)表征物体的材质信息material、materials(多材质) 6)表征是否接收阴影receiveShadows 于是我们得到另一组需要存储的信息:阴影信息(是否投射,是否接收)、光照图信息(索引、偏移),材质信息(需要注意的是多材质时,材质表现为一个数组,其中每一项的index即为该材质对应的通道号,在后续mesh中会使用到。) MeshFilter
可以看到他只有两个属性,一个是mesh,一个是sharedMesh,两个都i是Mesh对象。通过官方手册,我们得知这两个属性的区别在于,mesh是当前物体独有的,你修改他,不会影响其他也使用这个网格的物体,但是如果修改sharedmesh,则会连带其他使用该网格的物体一起变化。那么,对于此处,我们随便选择一个即可,因为我们自己保存加载物体,不会出现多个物体使用同一个网格。 Mesh:
1)表征网格顶点信息vertices 2)表征顶点对应的颜色信息colors 3)表征三角面信息triangles 4)表征纹理坐标UV 5)表征子网格的数量subMeshCount,每一种材质均对应一个独立的网格列表 6)此处不考虑人物模型,骨骼类的成员不予考虑 7)表征网格包围体信息bounds(可使用重新计算方法,不需存储) 至此我们已经搞清楚了,在unity3d中存储一个物体需要存储的信息。于是着手编码。此处,使用C#本身支持的序列化,使得信息的存储解析异常简单。 最终调用代码:
阅读(2772)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_',
blogTitle:'Unity3D 运行时 动态生成模型 模型的保存加载',
blogAbstract:'t\'r\t如五中所言,之前希望的是与Fbx文件的交互,但是现实的骨感让我不得不另觅他径。如果有人也在搞fbx sdk的问题,希望能和我联系,不甚感激。\t本文要讲述的是自定义文件保存模型信息。既然自定义,那么就是要搞清楚一个模型的渲染到底需要哪些信息。\t此处,因为我从事unity3d开发也不过半年时间,对于3d模型的理解还很肤浅,故而此处,我也只能对着unity3d来思考,我渲染那一个模型需要哪些信息。兴许等工作闲暇之后,再深层次分析fbx文件,再给出详细的3d模型的数据结构。',
blogTag:'unity3d,model,加载,保存',
blogUrl:'blog/static/',
isPublished:1,
istop:false,
modifyTime:8,
publishTime:1,
permalink:'blog/static/',
commentCount:3,
mainCommentCount:2,
recommendCount:0,
bsrk:-100,
publisherId:0,
recomBlogHome:false,
currentRecomBlog:false,
attachmentsFileIds:[],
groupInfo:{},
friendstatus:'none',
followstatus:'unFollow',
pubSucc:'',
visitorProvince:'',
visitorCity:'',
visitorNewUser:false,
postAddInfo:{},
mset:'000',
remindgoodnightblog:false,
isBlackVisitor:false,
isShowYodaoAd:false,
hostIntro:'目前在北京搭配家工作,负责家装软件的研发工作',
hmcon:'0',
selfRecomBlogCount:'0',
lofter_single:''
{list a as x}
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}Unity3D动态生成模型_图文_百度文库
您的浏览器Javascript被禁用,需开启后体验完整功能,
享专业文档下载特权
&赠共享文档下载特权
&10W篇文档免费专享
&每天抽奖多种福利
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Unity3D动态生成模型
阅读已结束,下载本文需要
想免费下载本文?
定制HR最喜欢的简历
下载文档到电脑,同时保存到云知识,更方便管理
加入VIP
还剩8页未读,
定制HR最喜欢的简历
你可能喜欢圣典中对于Unity3D的序列化介绍很容易和C#的序列化介绍搞混,做个笔记,方便以后查找。
很多资料算是拾人牙慧.
一、Serializable 序列化
Inherits from Attribute
The Serializable attribute lets you embed a class with sub properties in the inspector.
Serializable(序列化)属性让你植入一个类用替代内容在Inspector(检视面板)
You can use this to display variables in the inspector similar to how a&&shows up in the inspector. The name and a triangle to expand its properties. To do this you need create a class that derives from System.Object and give it the Serializable attribute. In JavaScript the Serializable attribute is implicit and not necessary.
你可以用这个去显示变量在inspector(检视面板)类似于将一个Vector3(3维向量)显示在inspector(检视面板)。这个名字和一个三角来扩展他的内容。去做这个你需要创建一个起源于System.Object的类并且给他Serializable属性。在JavaScript这个Serializable属性是隐含的,不必要的。
class Test extends System. {
var p = 5;
var test = Test ();
// C# Example
[System.Serializable]
class Test
public int p = 5;
& & You Can Do Like that:
& 本质上不过就是用一个类来代替一些字段让编辑器编辑罢了
& 未完待续&&
阅读(...) 评论()温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
Hierarchy窗口中是场景中的Game Object列表
Project窗口中是磁盘上Assets文件夹中的内容,可用来创建Game Object
调试用Debug.Log()或者print函数打日志
目前完全无法采用VisualStudio进行调试,只能用MonoDevelop。因Unity采用的是Mono运行时引擎而不是CLR,参考
另发现插件,Write and debug your Unity games inside Visual Studio
MonoDevelop对Unity的attach调试不能跨dll
Unity自带Mono版本可能是2.6
目前应谨慎考虑采用Mono写需长时间运行的服务器程序
MonoDevelop:
MonoDevelop写的源码文件会以UTF8 Unix结尾方式保存
Unity自带的MonoDevelop和官方MonoDevelop的有区别的,不要升级MonoDevelop
实用函数:
()可以切换场景
资源管理:
文件打包用的是
所有通过类加载的资源必须放在名为Resources的目录中
All assets that are in a folder named "Resources" anywhere in the Assets folder can be accessed via the
functions. Multiple "Resources" folders may exist and when loading objects each will be examined.
不同Resources目录同名目录加载规则无法预测!
,用的是直接COM读取excel的方式,没有参与资源管线
所有需要通过散包方式加载的文件必须通过的方式,加载后可自动识别movie、text、texture和bytes四种格式
,包括对已封装好的内部资源的加载和外部散包资源的加载
to center your automatic GUILayout
引用第三方库:
Unity支持(Platform Invocation Services)方式的插件,
团队工作:
编译与发布:
定制Build流程:
Unity发布的exe是非托管的,但逻辑dll是放在GAME_Data\Managed下的,代码完全可以反编译
没发现Unity编译后的资源目录Game_Data中的文件结构和编辑器中的Project目录有明显的直接对应关系
编译后资源都被放到sharedassets*.assets这样的加密文件中,其中*可能是场景编号; Scene文件可能被放到了level*中
Resources和其他目录不一样,其他目录编译完后会被自动打包合并,而Resources会有一个直接对应的resources.asset文件
相同的源反复编译生成的二进制不变
添加空场景后Game_Data/mainData发生改变
prefab和各种资源关联啥的会自动处理的,只把用到的打包
编辑器中Import Package但没有真正使用不会对编译结果造成影响
Game.exe始终是稳定不变的
版本管理:
即使采用了Force Text选项,ProjectSettings下很多asset文件也还是二进制格式的
WebBrowser相关:
可通过方法调用浏览器js方法
Unity doesn't support vector fonts. For every font size that you want to support, you need to import a new version of the font and change its import settings to a different size. @Unity 3.x Game Development by Exple Beginner's Guide[P201]
,其中shader开放可免费使用
采用双色半圆拼接饼状图是个技巧
(不断更新中)
(仅限于MonoBehaviour子类)
Inherit from
function to do initialisation
The class name must match the file name
Coroutines have a different syntax in C#
Coroutines have to have a return type of IEnumerator and you yield using "yield return" instead of just "yield"
Don't use namespaces
Only member variables are serialized and are shown in the Inspector
Avoid using the constructor or variable initializers
Never initialize any values in the constructor or variable initializers in a MonoBehaviour script. Instead use Awake or Start for this purpose.
AssertBundle
Editor扩展脚本:
Editor脚本是可以用C#写的,编译完后重启Unity生效
不要在Editor脚本中采用中文菜单,有一定可能down机
如果乱码,需要将文件保存为UTF8格式
压缩方式用的是lzma
,这个对版本制作有用
版本控制:
,哪些文件该放到svn的问题解决
Unity目前的版本已经把需要svn控制的文件单独归类放到Project Settings里了,现在只需要将Assets和ProjectSettings两目录加入svn即可&@
必须进行以下设置才可将项目加入到svn管理:
meta文件为Unity内部使用,不要手工更改,也必须加入svn
Unity内部是用GUID做文件间引用的
Force Text可以将场景文件序列化为文本,以利于版本控制,默认为二进制
Unity资源序列化采用的是
中文教程:&
中文教程:&
相同Depth的控件会存在z排序不稳定问题!复杂界面要进行合理的规划
Unity引用第三方dll随便拖到项目任何目录就可以了
所引用的托管dll必须是net3.5版本以下的(包括)
如果托管dll依赖非托管dll,则pc standalone版本的可行,web版的有安全限制,移动版也不可行,甚至System.IO名字空间都是受限的
要采用net20版本的,不要用mono版的,据说有坑
微端构造AssetBundle的时候不加BuildAssetBundleOptions.DeterministicAssetBundle选项,两次出来的md5码就不一样
将扩充代码放到单独目录中用VS开发,这样就可以加UnitTest了
运行时会将日志输出去到Data目录下的output_log.txt文件(UTF8),省的自己写日志文件了
不要打开GAME.sln,而要打开GAME-csharp.sln,可同时由MonoDevelop和VisualStudio编辑
调整项目Build Settings后,则可在MonoDevelop/Run/Attach to Process窗口中找到正在运行的游戏以进行attach调试
protobuf编解码在Unity Editor中运行正常,但单独部署运行抛出TypeInitializationException的问题
如果发现Unity Editor中运行正常而单独运行时不正常,可以考虑将Api Compatibility Level改为.NET 2.0而不是其Subset
Hightmap Resolution会比Terrain Resolution大1
移动平台小地形最好用模型,或者将Unity自带的Terrain用插件导出为模型,省性能。Unity Terrain依赖shader 2.0,某些手机不支持,即使导出地图也依赖shader 2.0,自己做地形模型一张贴图即可搞定
Skybox的设置在Edit/RenderSettings/Skybox Material下,确保Game Overlay按钮选中才可以显示出来
要第三人称在场景中漫游,需要将First Person Controller加入到场景
Inspector窗口中的Static Checkbox: Checking this box tells Unity that a particular object in your scene will not be moving during the game, and as such can be lightmapped.
支持,整合了,支持P2P,还提供了房间服务器和NAT穿透服务器,搞不定还有代理服务器。开房间娱乐性质的游戏不用写服务器逻辑
Anything that uses Rigidbodies or realistic movement should use FixedUpdate, but instead of Update for every frame.
Unity-4.0.1f2尚不支持Win8-Metro/WinPhone的导出
动态下载和加载资源:
Web MMO需要尽量减少首次下载量,并能在游戏运行中动态加载资源
游戏运行时资源下载和加载,Unity Pro支持两种方法: 资源包和资源目录。非Pro版本智能使用资源目录方法。一个资源包是一个外部的资源集合,游戏中可以使用多个资源包,资源包是在发行版本以外存在的。资源目录是一些资源的集合,资源目录被包含在发行版本里面,但是并没有和任何游戏对象有关联。资源目录通过Edit-&Project Settings-&Player的First Streamed Level With Resource来设定
对Web MMO产品的建议
主要是资源大小的考虑,资源中,贴图是大头,需要尽量减少贴图使用量。卡通类游戏比较适合
由于动态下载和加载资源会一直存在,玩家角色在场景中的移动速度不宜过大,大场景不宜频繁切换。资源动态下载需要占用玩家一定网络带宽
使用Unity的准备工作:
Unity毕竟是一款包含内容和功能很多的游戏引擎。需要花一些时间熟悉其编辑器、代码和开发环境、资源生产流程等主要功能。不建议项目开始前没有一定的准备期
,非常给力的一组学习笔记
unity的主要使用者是关卡策划和程序员
目前Unity对中文的支持不是很好,因此在Unity中尽量不要使用中文,防止出现各种各样莫名其妙的异常
如何调整太阳光方向和天空盒太阳贴图方向一致?
首先在设计视图中拖动视角,让镜头中心对准天空盒上的太阳
然后在渲染设置中临时将天空盒设置为无(为了方便调整Sun的角度,否则天空盒太亮看不清楚)
然后选中Sun并使用旋转工具(快捷键E),将光线的方向正对自己
然后再将天空盒恢复即可
一个好的游戏没有好的配乐和音效,就好像无暇的水晶缺少了灯光的陪衬。而音乐不仅能渲染出玩家攻略游戏时的氛围,还能增加提高玩家对游戏的认知度 @
所有Prefab实例的属性都引用自Prefab的预设,当预设属性改变时,对应的实例属性也会相应改变。但当实例的某个属性被手工调整后,即使修改预设的属性值,该值也会以手工调整的值为准
随着360和Unity的合作,前者的360安全浏览器预装Unity3d的方案实施会给Unity进军中国市场带来可观的便捷
Choosing GUI framework for your Unity3D project: EZGUI vs NGUI,
Directional light的Shadow Type:
No Shadows
Hard Shadow - 影子的轮廓比较清晰
Soft Shadow - 影子边缘模糊一点,更加逼真
Particle Emitter: 只管发射粒子
Particle Animator: 粒子动画器,负责对发射器产生的粒子进行二次加工,比如使粒子的颜色不断的变化,缩放粒子等
Particle Renderer: 粒子渲染器,负责将粒子渲染到游戏中,并且可以决定粒子的材质、光影等
当选中Prefab的实例时,检视面板上就会显示预制对象菜单:
Select:在工程面板中快速选取该实例引用的预制
Revert:将实例修改过的参数全部还原为预制的参数
Apply:将实例修改过的参数全部应用到预制,此时所有引用此预制的实例会一起受到影响而变动
yield用法:
所有使用yield的函数必须返回IEnumerator类型(这点和C# IEnumerable标准用法有差异!)
所有IEnumerator类型函数必须使用”StartCoroutine”这个函数触发,不能单独使用
不同颜色的字体需要创建不同的Materials, 其贴图设置为字体贴图, Shader要采用GUI/TextShader
只有public field才可进入Inspector窗口, 该功能可用[]特性屏蔽
和Inspector窗口关联的public field重命名后Inspector中编辑的值会丢失!
Be aware that any value adjusted in the Inspector will override the original value given to a variable within the script. It will not rewrite the value stated in the script, but simply replaces it when the game runs.? You can also revert to the values declared in the script by clicking on the Cog icon to the right of the component and choosing Reset from the drop-down menu that appears.
public property不会进入Instactor
enum在Inspector中会自动展示为ComboBox
动态调用, 解耦神器:
可通过方法进行动态方法调用!
可采用/方法, 用字符串名称的方式直接查找对象
将Prefab直接拖入场景可进行查看
, unity官方并未提供引擎dll对应的xml文档, 这对VisualStudio下的自动提示不友好
WCF & Unity
Service References的代码可用VisualStudio自带的“添加服务引用”功能,没必要非命令行用mono的svcutil。成功生成后需要将对应的C#代码文件拷贝到Assert下合适的目录中,否则不会参加编译
需要从C:\Program Files (x86)\Unity\Editor\Data\Mono\lib\mono\2.0拷贝到*\Assets\Plugins下的dll有:
System.Runtime.Serialization.dll
System.Security.dll
System.ServiceModel.dll
System.IdentityModel.Selectors.dll // 该文件也是必要的,否则System.ServiceModel.dll不会被正确引入
Unity会自动生成的两种项目文件,*-csharp.sln/*-vs.csproj或*.sln/*.csproj,前者是供VS用的,后者是供MonoDevelop用的,包含了自定义的项目类型*.unityproj
不要手工向*-csharp.sln中加入任何project,这会在Unity重新生成后覆盖。可将sln另存为得以解决
调整NGUI“米老鼠”大小:
is a gui and command line tool to create sprite sheets or sprite atlases
,包括cocos2d、CEGUI、Unity等,还可方便自定义输出格式
unity双开:
暂没有内嵌浏览器的支持
,将会在随后的unity新版中得到支持
GUI库,在移动平台会遇到性能问题,但开发效率要比NGUI高
阅读(31609)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
在LOFTER的更多文章
loftPermalink:'',
id:'fks_081071',
blogTitle:'Unity 3D 学习笔记',
blogAbstract:'&
Hierarchy窗口中是场景中的Game Object列表
Project窗口中是磁盘上Assets文件夹中的内容,可用来创建Game Object
调试用Debug.Log()或者print函数打日志
目前完全无法采用VisualStudio进行调试,只能用MonoDevelop。因Unity采用的是Mono运行时引擎而不是CLR,参考
{if x.moveFrom=='wap'}
{elseif x.moveFrom=='iphone'}
{elseif x.moveFrom=='android'}
{elseif x.moveFrom=='mobile'}
${a.selfIntro|escape}{if great260}${suplement}{/if}
{list a as x}
推荐过这篇日志的人:
{list a as x}
{if !!b&&b.length>0}
他们还推荐了:
{list b as y}
转载记录:
{list d as x}
{list a as x}
{list a as x}
{list a as x}
{list a as x}
{if x_index>4}{break}{/if}
${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')}
{list a as x}
{if !!(blogDetail.preBlogPermalink)}
{if !!(blogDetail.nextBlogPermalink)}
{list a as x}
{if defined('newslist')&&newslist.length>0}
{list newslist as x}
{if x_index>7}{break}{/if}
{list a as x}
{var first_option =}
{list x.voteDetailList as voteToOption}
{if voteToOption==1}
{if first_option==false},{/if}&&“${b[voteToOption_index]}”&&
{if (x.role!="-1") },“我是${c[x.role]}”&&{/if}
&&&&&&&&${fn1(x.voteTime)}
{if x.userName==''}{/if}
网易公司版权所有&&
{list x.l as y}
{if defined('wl')}
{list wl as x}{/list}

我要回帖

更多关于 unity3d随机生成敌人 的文章

 

随机推荐