u3d 创建对象destroy() 怎么删除多个对象

unity3d基础问题 - j2eedengzhangtao - ITeye技术网站
博客分类:
1.请描述游戏动画有哪几种,以及其原理。
答:主要有关节动画、单一网格模型动画(关键帧动画)、骨骼动画。
关节动画把角色分成若干独立部分,一个部分对应一个网格模型,部分的动画连接成一个整体的动画,角色比较灵活Quake2中使用了这种动画;
单一网络模型动画由一个完整的网格模型构成,在动画序列的关键帧里记录各个顶点的原位置及其改变量,然后插值运算实现动画效果,角色动画较真实。
骨骼动画,广泛应用的动画方式,集成了以上两个方式的优点,骨骼按角色特点组成一定的层次结构,由关节相连,可做相对运动,皮肤作为单一网格蒙在骨骼之外,决定角色的外观。皮肤网格每一个顶点都会受到骨骼的影响,从而实现完美的动画。
2.alpha blend 工作原理
答:alpha blend 用于做半透明效果。Color = (源颜色 *
源系数) OP (
目标颜色* 目标系数);其中OP(混合方式)有加,减,反减,取最小,取最大;
3.写光照计算中的diffuse的计算公式
答:漫反射光(diffuse)计算公式为:Idiffuse = Dintensity*Dcolor*N.L ; (Dintensity表示漫反射强度,Dcolor表示漫反射光颜色,N为该点的法向量,L为光源向量)
其他,3D渲染中,物体表面的光照计算公式为:
I = 环境光(Iambient) + 漫反射光(Idiffuse) + 镜面高光(Ispecular);
其中,环境光(ambient)计算公式为:
Iambient= Aintensity* A (Aintensity表示环境光强度,Acolor表示环境光颜色)
漫反射光(diffuse)计算公式为:
Idiffuse = Dintensity*Dcolor*N.L ; (Dintensity表示漫反射强度,Dcolor表示漫反射光颜色,N为该点的法向量,L为光源向量)
镜面光照(specular)计算公式为:
Ispecular = Sintensity*Scolor*(R.V)n; (Sintensity表示镜面光照强度,Scolor表示镜面光颜色,R为光的反射向量,V为观察者向量)
综上所得:整个光照公式为:
I = Aintensity* Acolor+ Dintensity*Dcolor*N.L + Sintensity*Scolor*(R.V)
将一些值合并,并使用白色作为光照颜色,则上述公式可简化为:
I = A + D*N.L + (R.V)n
4.lod是什么,优缺点是什么
答:LOD技术即的简称,意为多细节层次。技术指根据物体模型的节点在显示环境中所处的位置和重要度,决定物体渲染的资源分配,降低非重要物体的面数和细节度,从而获得高效率的渲染运算。
缺点:?????
5.两种阴影判断的方法工作原理
答:难道是Orthographic和Perspective么??????
5.Vertex Shader是什么?怎么计算?
答:顶点着色器,怎么计算哦???
6.MipMap是什么?作用?
答:在三维计算机图形的贴图渲染中有一个常用的技术被称为Mipmapping。为了加快渲染速度和减少图像锯齿,贴图被处理成由一系列被预先计算和优化过的图片组成的文件,这样的贴图被称为 MIP map 或者 mipmap。
7.用u3d实现2d游戏,有几种方式?
答:1.用本身的GUI
2.把摄像机的Projection调成Orthographic,物体的Z轴不考虑了。
8.u3d中碰撞器和触发器的区别?
答:碰撞器会有碰撞的效果,IsTrigger = false,可以调用OnCollisionEnter/Stay/Exit函数。
触发器没有碰撞效果,isTrigger = true,可以调用OnTriggerEnter/stay/exit函数
9.物体发生碰撞的必要条件
答:其中至少一个物体(运动的)必须带有碰撞器(collider)+刚体(Rigidbody)或者CharacterController,另一个物体也必须至少带有collider。
10.CharacterController和Rigidbody的区别
答:CharacterController自带胶囊碰撞器,里面好像封装了一个刚体
Rigidbody就是刚体,使物体带有物理的特性
11.物体发生碰撞时,有几个阶段,分别对应的函数
答:三个阶段,OnCollisionEnter/Stay/Exit函数
12.u3d中,几种施加力的方式,描述出来。
答:rigidbody.AddForce/AddForceAtPosition,都在rigidbody系列函数
13.什么叫做链条关节
答:Hinge Joint ,他可以模拟两个物体间用一根链条连接在一起的情况,能保持两个物体在一个固定距离内部相互移动而不产生作用力,但是达到固定距离后就会产生拉力。
14.物体自旋转使用的函数叫什么
答:transform.Rotate
15.物体绕某点旋转使用函数叫什么
答:transform.RotateAround
16.u3d提供了一个用于保存读取数据的类,(playerPrefs),请列出保存读取整形数据的函数
答:PlayerPrefs.SetInt(“CoinNum”,100);PlayPrefs.getInt("coinNum");
17.unity3d提供了几种光源,分别是什么
答:4种,Directionl light ,Point Light ,Spot Light,Area Light
18.unity3d从唤醒到销毁有一段生命周期,请列出系统自己调用的几个重要方法。
答:Awake ---&
Start ---& Update
--& FixedUpdate --& LateUpdate ---&OnGUI --&Reset --& OnDisable --&OnD
19.物理更新一般在哪个系统函数里?
答:FixedUpdate,每固定帧绘制时执行一次,和不同的是是渲染帧执行,如果你的渲染效率低下的时候调用次数就会跟着下降。比较适用于物理引擎的计算,因为是跟每帧渲染有关。就比较适合做控制。
20.移动相机动作在哪个函数里,为什么在这个函数里。
答:LateUpdate,在每帧执行完毕调用,他是在所有结束后才掉,比较适合用于命令脚本的执行。官网上例子是摄像机的跟随,都是在所有操作完才跟进摄像机,不然就有可能出现摄像机已经推进了,但是视角里还未有角色的空帧出现。
21.当游戏中需要频繁创建一个物体对象时,我们需要怎么做来节省内存。
答:使用prefab,动态创建对象
22.一个场景放置多个camera并同时处于活动状态,会发生什么
答:游戏界面可以看到很多摄像机的混合。可以用depth(深度),Layer(层)+ Culling Mask,enable = false/true来控制
23.简述prefab的用处和环境
答:Prefab在实例化的时候用到,主要用于经常会用到的物体,属性方便修改。
24.如何销毁一个UnityEngine.Object以及其子类
答:Destory
25.为什么u3d会出现组件上数据丢失的情况
答:一般是组件上绑定的物体对象(文件)被删除了。
26.u3d下如何安全的在不同工程迁移asset数据
答:方法1,可以把assets目录和Library目录一起迁移,
方法2,导出包,
方法3,用unity带的assets server功能
dengzhangtao
浏览: 253542 次
来自: 上海
楼主,我这里有个问题!我这里有个自己制作的font.ttf,这 ...
既然springMVC比struts好那么多的话那struts ...
楼上的很给力啊。。3Q
目前收集了160多个不错的Android开源项目汇总到 htt ...4401人阅读
初学U3D,贵在坚持和总结,一来对平时的知识巩固,二来可以让自己思路更清晰!& 希望与更多的U3D爱好者交流学习。
一、动态为对象添加渲染贴图:
using&UnityE&&using&System.C&&&&public&class&NewBehaviourScript&:&MonoBehaviour&{&&&&&&&&&&&&GameObject&&&&&&&&&&&&&&&void&OnGUI()&&&&&&{&&&&&&&&&&if(GUILayout.Button(&Add&,GUILayout.Height(60),GUILayout.Width(110)))&&&&&&&&&&{&&&&&&&&&&&&&&
&&&&&&&&&&&&&&obj&=&GameObject.CreatePrimitive(PrimitiveType.Cube);&&&&&&&&&&&&&&&&&&&&&&&&&&&&obj.transform.position&=&new&Vector3(100,100,100);&&&&&&&&&&&&&&&&&&&&&&&&&&&&obj.name&=&&Andy&;&&&&&&&&&&&&&&&&&&&&&&&&&&&&obj.renderer.material.mainTexture&=&(Texture)Resources.Load(&0&);&&&&&&&&&&}&&&&&&&&&&if(GUILayout.Button(&Del&,GUILayout.Height(60),GUILayout.Width(110)))&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&Destroy(obj);&&&&&&&&&&}&&&&&&}&&}&&
using UnityE
using System.C
public class NewBehaviourScript : MonoBehaviour {
void OnGUI()
if(GUILayout.Button(&Add&,GUILayout.Height(60),GUILayout.Width(110)))
//创建Cube对象
obj = GameObject.CreatePrimitive(PrimitiveType.Cube);
//移动至指定坐标
obj.transform.position = new Vector3(100,100,100);
//对象名称
obj.name = &Andy&;
//材质渲染,(Texture)强制转换
obj.renderer.material.mainTexture = (Texture)Resources.Load(&0&);
if(GUILayout.Button(&Del&,GUILayout.Height(60),GUILayout.Width(110)))
//销毁对象
Destroy(obj);
二、添加和删除脚本:
1、首先创建两个脚本,命名为:“Main.cs”和&CubeScript&;
2、然后新建一个Cube ;
3、打开CubeScript.cs脚本,添加代码,使Cube执行旋转操作;
using&UnityE&&using&System.C&&&&public&class&CubeScript&:&MonoBehaviour&&&{&&&&&&&&void&Start&()&&&&&&&{&&&&&&&&&&&&}&&&&&&&&&&&&void&Update&()&&&&&&&{&&&&&&&&&&&&&&&&&&&&gameObject.transform.Rotate(new&Vector3(0,6,0));&&&&&&}&&}&&
using UnityE
using System.C
public class CubeScript : MonoBehaviour
void Start ()
void Update ()
//定义对象 y轴旋转
gameObject.transform.Rotate(new Vector3(0,6,0));
4、打开Main.cs脚本,写入代码如下:
using&UnityE&&using&System.C&&&&public&class&Main&:&MonoBehaviour&&&{&&&&&&&&&&&&&&&&&&GameObject&&&&&&&&&&&&&void&Start&()&&&&&&{&&&&&&&&&&&&&&&&&&&&obj&=&GameObject.Find(&Cube&);&&&&&&}&&&&&&&&&&&&&&&&&&&&&&&&void&OnGUI()&&&&&&&{&&&&&&&&&&if(GUILayout.Button(&Move&))&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&obj.AddComponent(&CubeScript&);&&&&&&&&&&&&&&}&&&&&&&&&&if(GUILayout.Button(&ReMove&))&&&&&&&&&&&&&&{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Object&Script&=&obj.GetComponent(&CubeScript&);&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&Destroy(Script);&&&&&&&&&&&&&&}&&&&&&}&&&&&&&&&&&&&&void&Update&()&&&&&&&{&&&&&&&&&&&&&&&&}&&}&&
using UnityE
using System.C
public class Main : MonoBehaviour
//定义全局游戏对象
void Start ()
//获取Cube组件
obj = GameObject.Find(&Cube&);
void OnGUI()
if(GUILayout.Button(&Move&))
//为Cube对象添加CubeScript脚本
obj.AddComponent(&CubeScript&);
if(GUILayout.Button(&ReMove&))
//必须先定义一个Object对象,获取Cube组件的对应脚本
Object Script = obj.GetComponent(&CubeScript&);
//销毁该脚本
Destroy(Script);
void Update ()
5、将Main.cs脚本,拖拽至摄像机;
效果可见:
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场Unity 3D 动态创建对象,并渲染贴图,动态添加删除脚本
编辑:www.fx114.net
本篇文章主要介绍了"Unity 3D 动态创建对象,并渲染贴图,动态添加删除脚本",主要涉及到Unity 3D 动态创建对象,并渲染贴图,动态添加删除脚本方面的内容,对于Unity 3D 动态创建对象,并渲染贴图,动态添加删除脚本感兴趣的同学可以参考一下。
初学U3D,贵在坚持和总结,一来对平时的知识巩固,二来可以让自己思路更清晰!& 希望与更多的U3D爱好者交流学习。
一、动态为对象添加渲染贴图:
二、添加和删除脚本:
1、首先创建两个脚本,命名为:“Main.cs”和&CubeScript&;
2、然后新建一个Cube ;
3、打开CubeScript.cs脚本,添加代码,使Cube执行旋转操作;
4、打开Main.cs脚本,写入代码如下:
5、将Main.cs脚本,拖拽至摄像机;
效果可见:
本文标题:
本页链接:u3d 怎么用代码增加和删除 gameobject_百度知道
u3d 怎么用代码增加和删除 gameobject
提问者采纳
再将这个图片添加给Sprite是吧; sprite兄弟;.spriteName = &XXX&quot.GetComponent(), 这个是可以的 UISprite sprite = gameObject,其实你的意思应该是从图片集中获取某一张图片吧
来自团队:
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 u3d 多点触控 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信