Unity3D项目开发一点经验

我们主要使用3dsmax2010进行制作,输出FBX的类型导入Unity3D中。默认情况下,3dsmax8可以和U3D软件直接融合,自动转换为FBX物体。

注意事项如下:

1.面数控制

      在MAX软件中制作单一GameObject物体的面数不能超过65000个三角形,即32500个多边形Poly,如果超过这个数量的物体不会显示出来,这就需要我们合理分布多边形和模型数量。打开MAX场景,选择File/Properties/SummaryInfo可以打开文件属性记录。其中Faces可以看到每个物体的实际数量,个体数量不能超过65000个Faces面。

2.建模控制

      Unity3D软件支持Line渲染和编辑之后所产生的模型。大部分模型都依靠Polygon进行制作。在模型表面可以承认多出四边形的面,但不渲染交错的面。默认情况下,U3D引擎是不承认双面材质的,除非使用植物材质球Nature类型。所以在制作窗户、护栏等物体,如果想在两面都能看到模型,那需要制作出厚度,或者复制两个面翻转其中一个的Normal法线。

3.文件的放置

      模型可以继承MAX的材质,但是文件的设置要按照以下形式进行放在项目的Assets文件夹内,新创建一个Object文件夹。并在其中创建Materials和Texture文件夹(分别自动存放材质球和贴图)。模型物体并列保存在Object文件夹内。这个规律模式不要打乱,否则会破坏整个系统逻辑。

4.材质数量控制

      如果一个物体给与一个材质球,那么Unity3D对于材质数量和贴图数量没有任何的限制。如果一个物体给与多个材质球,我们需要用Multi/SubObject来实现,但是这种罗列的材质球的数量没有严格的控制,但尽量保持在10以内,过多的数量会导致一些错误。如果不使用Multi/SubObject材质球,也可以选择一些面,然后给与一个材质球。这样系统会自动将其转换成Multi/SubObject材质。综合而言Unity3D软件对于材质的兼容还是很好的。

5.物体的质感

Diffuse       Diffuse Bumped        Bumped Specular

这三种类型为常用类型,其中Bumped需要增加Normal法线贴图来实现凹凸。

Decal

这种材质为贴花材质,即相当于Mask类型,可以再Decal(RGBA)贴与一个带有Alpha通道的图像,形成和原图像相叠加的效果。

Diffuse Detail

这种材质可以创造出污迹和划痕的效果,即相当于Blend混合材质。

Reflective

其中各种类型可以创造出金属反射效果,需要增加Cubmap贴图。

Transparent

其中各种类型可以创造出透明的效果,需要增加具有Alpha的通道贴图。

注意:如果要做玻璃贴图,Alpha如果全是灰色或黑色(即要求全透明),那么Alpha就会失效,如果要全透明,材质Alpha其中必须至少有1像素为白色。

Nature

其中SoftOcclusion Leaves类型主要应用于片状的树叶材质。

6.物体尺寸

      默认情况下U3D系统单位1等于1米,等于软件1单位。如果我们制作是按照实际大小比例制作,那么导入U3D引擎会自动变成原来的1%的大小。因为默认情况下,U3D的FBXImporter中的Scale Factor的数值为0.01。那个我们可以将ScaleFactor的数值恢复为1,但是这样会占用模型资源,比较消耗物理缓存。我们也可以将这个物体从Hierarchy中选择,并使用Scale放大100倍,这种设置可以有很多好处,并且还能通过用脚本制作动画。

7.关于复制

      场景中的灯光布局,重复的模型物体都可以使用系统Prefab进行关联复制,这样可以改变一个参数的同时将所有关联物体属性改变。

8.山脉控制

       在创建山脉之后,选择Terrain/Set Resolution可以设置山脉的大小和属性。需要注意的是,默认情况下TerrainWidth和Terrain Height为1000米。如果设置这个数值太小,那么绘制草的时候会产生偏移,因为草的尺寸必须减少到0.1的单位。也就是说,山脉在处理0.1单位的时候会产生0.01的偏差,如果模型太小,这种偏差是显而易见的,所以建议用户不要让模型过小。

9.光晕控制

       光晕又称为Lens Flare即灯光光效。可以选择一个GameObject物体给与Component/Rendering/LensFlare,并在Flare中增加一个StandardAssets/Light Flares/50mm Zoom项目。这样在运行之后就会产生光晕。但有时候如果光晕太远太高却看不到。一种办法是将光晕离近,另一种办法是将所有摄影机Camera的Far clip plane的数值增加。

10.摄影机控制

       如果场景中有多架摄影机,那么如何确定第一打开时间所显示的摄影机,就需要设置Camera属性中的Depth数值,数值越大的摄影机越优先显示。

posted @ 2013-08-02 20:49 蓬莱仙羽 阅读(3) 评论(0) 编辑
Unity3D使用过程中常见的20个问题

1:天空盒有接缝怎么解决?
答:在贴图导入设置里设置Wrap Mode为"Clamp".

2:DDS格式怎么不显示?
答:Unity不支持DDS格式,Unity会将除DDS外的其他格式图片具有为DDS同样的优化.

3:Unity如何动态载入外部模型等文件?
答:可以使用AssetBundle:http://unity3d.com/support/docum ... ce/AssetBundle.html

4:脚本编辑器有语法提示吗?
答:有的,Win版使用Ctrl+I,Mac版使用Ctrl+>.

5:如何使用烘焙贴图(多重纹理)?
答:不要使用Shell贴图,直接将烘焙图赋予贴图的"自发光"通道之上.

6:怎么屏蔽Webplayer右键菜单?
答:<param name="disableContextMenu" value="true" />

7:为什么水面没有实时反射效果?
答:只有专业版才支持这种反射效果.

8:怎么做摄像机漫游动画?
答:Max正常制作摄像机漫游动画,倒到Unity中后,将Unity的Camea拖拽到Max导出的摄像机Gameobject物体之上,作为其子物体即可.

9:如何自定义Webplayer载入Logo及进度条?
答:<param name="logoimage" value="Logo文件名" />,<param name="progressbarimage" value="进度条名"  />,<param name="progressframeimage" value="进度条外框名" />.

10:GUI上怎么使用中文字?
答:导入任意中文字体,然后定义GUISkin字体为该字体即可.

11:购买一个授权可以安装几台电脑?
答:可以安装于2个系统之上比如一个Win版一个Mac版.

12:Max文件扔到Unity中怎么说导入失败?
答:下载最新版Fbx插件,用Max导出Fbx文件然后扔Unity中.

13:如何不让摄像头穿透模型,离模型近了就像模型露面了?
答:设置相机的Near clip plane,调小一点,但是不要给负数.

14:怎么用双面贴图?
答:Unity中可设置双面Shader,最简单有效的办法是直接做成双面的实体模型.

15:导入的Fbx模型尺寸小于Max中的尺寸?
答:在Unity中该文件的导入设置中设置缩放因子为1.

16:如何给相机添加Glow效果?
答:选中相机对象,在菜单中选中Component-Image Effects-Glow赋予该组件即可(专业版才支持此特效)

17:怎么设置Webplayer默认尺寸?
答:到菜单Edit-Project Settings-Player中设置Default Web Screen尺寸即可.

18:怎么设置可执行文件的启动Banner?
答:到菜单Edit-Project Settings-Player中设置Resolution Dialog Banner.

19:如何设置雾效?
答:到菜单Edit-Render Settings中开启Fog及设置Fog Color等即可.

20:如何设定默认Skybox天空盒?
答:到菜单Edit-Render Settings中设置Skybox Material即可.

posted @ 2013-08-02 20:46 蓬莱仙羽 阅读(1) 评论(0) 编辑
@property中strong跟weak的区别

strong关键字与retain关似,用了它,引用计数自动+1,用实例更能说明一切

 

@property (nonatomic, strong) NSString *string1;   

@property (nonatomic, strong) NSString *string2;  

 

有这样两个属性,

 

 @synthesize string1;   

@synthesize string2;  

 

 

猜一下下面代码将输出什么结果?

 

self.string1 = @"String 1";   

self.string2 = self.string1;   

self.string1 = nil;  

NSLog(@"String 2 = %@", self.string2);  

 

 

结果是:String 2 = String 1

由于string2是strong定义的属性,所以引用计数+1,使得它们所指向的值都是@"String 1", 如果你对retain熟悉的话,这理解并不难。

 

接着我们来看weak关键字:

如果这样声明两个属性:

 

@property (nonatomic, strong) NSString *string1;   

@property (nonatomic, weak) NSString *string2;  


并定义 

@synthesize string1;   

@synthesize string2;  

 

 


再来猜一下,下面输出是什么?

 

 self.string1 = @"String 1";   

self.string2 = self.string1;   

self.string1 = nil;  

NSLog(@"String 2 = %@", self.string2);  


结果是:String 2 = null

 

分析一下,由于self.string1与self.string2指向同一地址,且string2没有retain内存地址,而self.string1=nil释放了内存,所以string1为nil。声明为weak的指针,指针指向的地址一旦被释放,这些指针都将被赋值为nil。这样的好处能有效的防止野指针。在c/c++开发过程中,为何大牛都说指针的空间释放了后,都要将指针赋为NULL. 在这儿用weak关键字帮我们做了这一步。

posted @ 2013-08-02 17:29 蓬莱仙羽 阅读(3) 评论(0) 编辑
C语言面试
摘要: 最全的C语言试题总结第一部分:基本概念及其它问答题 1、关键字static的作用是什么?这个简单的问题很少有人能回答完全。在C语言中,关键字static有三个明显的作用:1). 在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2). 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3). 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。大多数应试者能正确回答第一部分,一部分能正确回答第二部分,同是很少的人能懂得第三部分。这是一个阅读全文
posted @ 2013-07-30 13:15 蓬莱仙羽 阅读(7) 评论(0) 编辑
C++中单例模式

//C++单例模式:指一个类只生成一个对象

#include <iostream>

using namespace std;

 

class A{

public:

    static A* getA();

    static A* a;

    int b = 0;

    void funAdd(){

        b++;

        cout<<b<<"\n";

    };

    void funClear(){

        b = 0;

    }

};

 

A *A::a = NULL;

A *A::getA()

{

    if (a == NULL) {

        a = new A;

    }

    return a;

}

 

int main(int argc, const char * argv[])

{

    for (int i=0; i<10; i++) {

        (A::getA())->funAdd();

        if (i == 4) {

            (A::getA())->funClear();

        }

    }

    return 0;

}

posted @ 2013-07-29 19:01 蓬莱仙羽 阅读(4) 评论(0) 编辑
OC对象的动态和静态构造区别

Student.h:

#import <Foundation/Foundation.h>  @interface Student : NSObject  @property(nonatomic,retain) NSString * name;  @property(nonatomic,assign) int age;  @end

Student.m:

#import "Student.h"  @implementation Student  //动态方法,在main函数中类alloc了之后调用,但是要手动管理内存,要手动释放  -(id) initWithAge:(int)age{      if (self == [super init]) {          _age = age;      }      return self;  }     //静态构造方法,在main函数中不需要你手动管理内存释放  +(id)studentWithAge:(int)age{      Student *stu = [[[Student alloc] init] autorelease];\      stu.age = age;      return stu;  }     -(NSString *)description{      return [NSString stringWithFormat:@"name:%@ age:%i创建了",_name,_age];  }     -(void)dealloc{      NSLog(@"name:%@ age:%i被释放了",_name,_age);      [_name release];      [super dealloc];  }  @end 

  

main

 

 1 #import <Foundation/Foundation.h>  2   3 #import "Student.h"  4   5 int main(int argc, const char * argv[])  6   7 {  8   9     @autoreleasepool { 10  11         //动态方法需要手动释放内存 12  13         Student *stu1= [[Student alloc] initWithAge:10]; 14  15         stu1.name = @"dingxiaowei"; 16  17         NSLog(@"%@",stu1); 18  19         [stu1 release]; 20  21         //静态构造方法不需要你管理内存 22  23         Student *stu2 =[Student studentWithAge:20]; 24  25         stu2.name = @"wangning"; 26  27         NSLog(@"%@",stu2); 28  29     } 30  31     return 0; 32  33 }














,如需转载请自行联系原作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/392867.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 142. 环形链表 II(set/快慢指针)

给定一个链表&#xff0c;返回链表开始入环的第一个节点。 如果链表无环&#xff0c;则返回 null。 为了表示给定链表中的环&#xff0c;我们使用整数 pos 来表示链表尾连接到链表中的位置&#xff08;索引从 0 开始&#xff09;。 如果 pos 是 -1&#xff0c;则在该链表中没有…

html5 支持表格吗,html5 – 在HTML 5中使用表格很好吗?

简单规则 – 使用表格表格数据&#xff0c;使用其他元素进行演示(使用CSS设计布局)&#xff0c;如div&#xff0c;section&#xff0c;aside&#xff0c;nav等。这为他们所持有的内容提供了意义&#xff0c;而不是为所有内容使用表事实是&#xff0c;开发人员在90年代使用了表格…

css网格_我如何记住CSS网格属性

css网格The syntax for CSS Grid is foreign and hard to remember. But if you can’t remember CSS Grid’s syntax, you won’t be confident when you use CSS Grid.CSS Grid的语法是外来的&#xff0c;很难记住。 但是&#xff0c;如果您不记得CSS Grid的语法&#xff0c;…

2017年读书计划(一)

前言 这篇博文就暂时不记录技术了&#xff0c;记录下生活。对自己今年2017年做个读书计划安排。 最近在看一部网络剧 - 《花间提壶方大厨》&#xff0c;也许你们会感觉我很无聊&#xff0c;我也是被头条带坏了&#xff0c;每天上班一个小时的地下交通-地铁&#xff0c;就借助上…

.net10个必备工具

1.NUnit 编写单元测试的工具2.NDoc 自动生成代码文档的工具3.NAnt 编译解决方案的工具4.CodeSmith 自动生成代码的工具5.FxCop 检查你的代码是否按照规范编写的工具6.Snippet Compiler 编译少量代码的工具7.ASP.NET Version Switcher Visual Studio .NET Project Conve…

音标

音标 oror ds念子音&#xff0c;ts念s音

leetcode 530. 二叉搜索树的最小绝对差(中序遍历)

给你一棵所有节点为非负值的二叉搜索树&#xff0c;请你计算树中任意两节点的差的绝对值的最小值。示例&#xff1a;输入&#xff1a;1\3/2输出&#xff1a; 1解释&#xff1a; 最小绝对差为 1&#xff0c;其中 2 和 1 的差的绝对值为 1&#xff08;或者 2 和 3&#xff09;。代…

计算机排线知识,一种计算机排线梳理装置制造方法及图纸

【技术实现步骤摘要】一种计算机排线梳理装置本技术涉及计算机排线梳理&#xff0c;具体涉及一种计算机排线梳理装置。技术介绍计算机俗称电脑&#xff0c;是现代一种用于高速计算的电子计算机器&#xff0c;可以进行数值计算&#xff0c;又可以进行逻辑计算&#xff0c;还具有…

github和pypi_如何将GitHub用作PyPi服务器

github和pypiI was looking for a hosted private PyPi Python Package server, that used credentials that the team already has (such as GitHub).我正在寻找一个托管的私有PyPi Python Package服务器&#xff0c;该服务器使用了团队已经拥有的凭据(例如GitHub)。 I didn’…

数据结构与算法---查找算法(Search Algorithm)

查找算法介绍 在java中&#xff0c;我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找斐波那契查找1)线性查找算法 示例&#xff1a; 有一个数列&#xff1a; {1,8, 10, 89, 1000, 1234} &#xff0c;判断数列中是否包含此名称【顺序查找】 要求: 如果找到了&a…

Exchange Server 2007邮箱存储服务器的集群和高可用性技术(上)

高可用性矩阵-->见下图:邮箱服务器高可用性目标: 数据可用性-->保护邮箱数据免于失败和损坏服务可用性-->提高群集实效转移操作 简化群集管理 支持地理分散的群集 支持低成本大邮箱(GB)使用户可以基于业务需要更好的选择容错方案提高解决方案的可用性使用解决方案可…

【C/C++开发】C++实现字符串替换的两种方法

替换字符串replace() erase()//C 第一种替换字符串的方法用replace()|C 第二种替换字符串的方法用erase()和insert()【 Cstring|C replace()|C erase()|C insert()|C自定义替换字符串函数】#include<string> #include<iostream> using namespace std;//第一种替换字…

html设置按钮样式变为椭圆,css border-radius圆形变为椭圆形,位置:绝对

我正在围绕字体真棒图标创建一个圆圈。我的问题是&#xff0c;当我添加position: absolute圆成为一个椭圆。css border-radius圆形变为椭圆形&#xff0c;位置&#xff1a;绝对同样的情况&#xff0c;如果我是设置display: block这里是什么&#xff0c;我想实现的图像 -CONRADU…

《火球——UML大战需求分析》(第1章 大话UML)——1.5 小结和练习

说明&#xff1a; 《火球——UML大战需求分析》是我撰写的一本关于需求分析及UML方面的书&#xff0c;我将会在CSDN上为大家分享前面几章的内容&#xff0c;总字数在几万以上&#xff0c;图片有数十张。欢迎你按文章的序号顺序阅读&#xff0c;谢谢&#xff01;本书已经在各大网…

金陵科技学院计算机开设课程,金陵科技学院各专业介绍

各专业介绍会计学专业(四年制本科) 金融学专业(四年制本科)财务管理专业(四年制本科) 国际经济与贸易专业(四年制本科)市场营销专业(四年制本科)国际商务专业(三年制专科)物流管理专业(三年制专科) 对外汉语专业(四年制本科)古典文献(古籍修复)专业(四年制本科)行政管理(高级秘…

【jQuery Demo】图片由下至上逐渐显示

无意中看到如何实现一张图片从下往上慢慢显现出来这个问题&#xff0c;弄了半天还是从上往下的效果&#xff0c;纠结了&#xff0c;最后还是提问人自己搞定了&#xff01;不过哈哈&#xff0c;又学到一点知识&#xff01; 1.下面是我自己做的效果(按钮可以点哦) 图片由下至上逐…

Morphia - mongodb之ORM框架

一、简介 二、注解 1、Entity 2、Id3、Indexed4、Embedded5、Transient和Property6、Reference 三、示例 四、参考资料 Morphia快速入门 Morphia 注解详解 使用Morphia框架操作mongodb 使用 Morphia 和 MongoDB 实现持久化 Spring中Mongodb的java实体类映射 ORM框架Morphia的学…

石头剪刀布游戏web_Web开发教程-剪刀石头布

石头剪刀布游戏webThis web development tutorial shows how to use JavaScript, HTML, and CSS to create a rock Paper Scissors Game in the browser.这份网络开发教程展示了如何使用JavaScript&#xff0c;HTML和CSS在浏览器中创建石头剪刀布游戏。 Tenzin explains every…

两个数之和等于第三个数

这是一个很好的算法题&#xff0c;解法类似于快速排序的整理方法。同时&#xff0c;更为值得注意的是这道题是 人人网2014校园招聘的笔试题&#xff0c;下面首先对题目进行描述&#xff1a; 给出一个有序数组&#xff0c;另外给出第三个数&#xff0c;问是否能在数组中找到两个…

html标题前色块,CSS轻松实现色块标题标识

不少网站开始采用韩式风格来建站&#xff0c;这种风格的特点是色彩变化丰富、应用Flash动画合理、结构新颖&#xff0c;最明显的特点就是表格或标题栏常会加上一条横或竖的色带&#xff0c;如图1中圈起来的地方就是这样。(图一)一般人都会想到用Photoshop等软件来完成这样的效果…