谁用unity3d 生成 html5啊?能生成动态链接库吗

在游戏开发中动态的创建、设置、销毁游戏对象经常用到,刚刚接触Unity,在此做个笔记吧。
1.如何动态创建对象:调用GameObject的CreatePrimitive方法可以按模型进行创建,PrimitiveType中可选的模型有,Cube(立方体),Sphere(球体),Capsule(胶囊),Plane(平原),Cylinder(圆柱);创建出的对象不需要Add之类的就可以显示出来
GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
&pre name=&code& class=&csharp&&cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);&span style=&font-family:宋体;&&//指定游戏对象的位置&/span&
2.动态添加组件:通过AddComponent&Rigidbody&();可以为一个GameObject对象添加一个刚体组件,其中Rigidbody表示刚体,我们可以通过更改这个类型来为其添加不同的组件。当我们添加刚体组件后可以获得GameObject的rigidbody对象并对刚体进行设置
cubeObject.AddComponent&Rigidbody&();//为游戏对象添加刚体组件&pre name=&code& class=&csharp&&cubeObject.rigidbody.mass = 0.5f;//设置刚体密度,默认为1
cubeObject.rigidbody.AddForce(Vector3.forward *100);//为其施加向前的力
3.动态添加脚本:可以通过AddComponent方法并传入一个string类型对象(表示脚本的名称)来为GameObject对象动态添加脚本。
cubeObject.AddComponent(&AutoDestory&);//添加脚本文件AutoDestory
4.动态销毁对象:Destroy(cubeObject)是立即销毁游戏对象,Destroy(cubeObject,1)是延迟一秒销毁游戏对象
5.动态销毁脚本:Destroy(cubeObject.GetComponent(“AutoDestory”))销毁cubeObject对象上附加的脚。
6.一般我们在游戏对象不可见时会销毁或停止其动作,在其被摄像同捕捉到可见时执行其动作,这样我们可以复写其中的OnBecameInvisible方法(当游戏对象不可见时被执行),OnBecameVisible方法(当游戏对象可见时被执行)来达到上述效果。
using UnityE
using System.C
//当游戏对象不可见时销毁
public class AutoDestory
MonoBehaviour
void OnBecameInvisible(){
Destroy (this.gameObject);
7.复制对象:在游戏中有时相同的对象会用到很多次,例如大量的子弹发射,如果利用复制对象的方法可以提高效率。调用GameObject的Instantiate方法返回一个Object对象进行强转可以得到复制的对象。
GameObject cubeClone = (GameObject) GameObject.Instantiate(cubeObject);
8.动态设置游戏对象的材质,为游戏对象添加贴图:我们可以通过cubeObject.renderer.material获得游戏对象的材质,并对其赋值即可,一般我们可以声明一个public的Material的成员变量,并赋给游戏对象,这样我们可以在Unity的编辑器中随时更改贴图。
using UnityE
using System.C
public class Test : MonoBehaviour {
public Material cubM
// Use this for initialization
void Start () {
GameObject cubeObject = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
cubeObject.transform.position = new Vector3(-2.0f, 0.5f, 4.0f);
cubeObject.renderer.material = cubM二次元同好交流新大陆
扫码下载App
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!&&|&&
LOFTER精选
网易考拉推荐
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
阅读(3226)|
用微信&&“扫一扫”
将文章分享到朋友圈。
用易信&&“扫一扫”
将文章分享到朋友圈。
历史上的今天
loftPermalink:'',
id:'fks_',
blogTitle:'在Unity3D中动态创建对象和创建Prefab原型对象的三种方式',
blogAbstract:'\r\n转自:
{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-在Unity项目中使用Mono DLL(动态链接库)
发布时间: 10:33:06
最近研究了下Unity对Dll的调用。查了一些资料,总结如下。
为什么要用DLL?
&&&1:你选择用来开发的编程语言并不被Unity支持(如 F#),这个时候你就可以考虑把这样的代码编译成DLL文件。
&&&2:你并不想让代码公开,只是想提供调用接口,那么DLL是一个很好的选择。
答:回答这个问题,首先要解决&怎么创建Unity3d 支持的DLL&和&Unity3D要怎么使用DLL.&
&&&1. 创建Unity3d支持的DLL
&&&&&&(1)选择合适的编译器(因为Unity并不能确保支持所有编译器编译的.Net代码)。
&&&&&&&&&&& 如:MonoDevelop& Visual Studio
&&&&&&(2)确定代码是否基于Unity的API。
&&&&&&&&&&&如果DLL文件不包含基于Unity的API的代码,你仍然可以使用合适的编译选项把它编译成DLL文件。
&&&&如果你想使用Unity的API,则你需要在编译器中引用Unity的DLL,有两个分别是UnityEngine.dll和UnityEditor.dll。&&
&&&&&&&&&&&Mac系统上Unity的DLLS路径一般是:
&&&&&&&&&&&&&&&&&&&&& /Applications/Unity/Unity.app/Contents/Frameworks/Managed/
&&&&&&&&&&&系统中,DLLS能在Unity应用的安装文件夹中找到。路径一般是:&
&&&&&&&&&&&&&&&&&&& &C:\Program Files(x86)\Unity\Editor\Data\Managed
&&&&&&&最后,准确的编译DLL将取决于编译器的使用。
&&&&&&&例:Mono C#编译器的命令行,在Mac系统上mcs可能像下面这样
&&&&&&&mcs -r:/Applications/Unity/Unity.app/Contents/Frameworks/Managed/UnityEngine.dll -target:library ClassesForDLL.cs
&这里,-r指定了发布时被包含的库的路径,在这个例子中是UnityEngine的库。-target指定了发布时需要的文件;"library"被用于选着的发布一个DLL。最后,ClassForDLL.cs就是将要被编译的文件。 (假定这个文件是在当前工作目录,如果必要的话你可以指定文件使用的完整路径)。如果一切顺利,生成的DLL文件不久就会出现在源文件的同一文件夹下。
&& 2. Unity3d使用DLL文件
一旦编译好,DLL文件就可以像其他资源一样被拖进Unity的工程里面。DLL资源上有个小三角形,用来揭示库里面单独的一些类。继承自MonoBehaviour类可以像普通的脚本拖到游戏对象上。Non-MonoBehaviour类可以以平时的方式直接在其他脚本中使用。
&&& 参考文献:
&& &附上一个 Demo,&
来源:/flamepenguin/p/3545979.html33188人阅读
Unity3D(19)
u3d里动态创建对象,需要使用prefab
而创建的时候 MonoBehaviour.Instantiate( GameObject orignal) 需要一个作为原型的对象。
本文提供三种方式获得prefab对象。
方式一:使用脚本的public字段
直接在Project视图里找到做好的prefab,将其拖拽到指定脚本的指定public GameObject 字段。
方式二:Resource类
1、在Assets目录下的任意位置创建一个名为resources的文件夹,将做好的prefab放到这个文件夹下,path形式如下:
Assets\....\resources\prefabName.prefab
2、在代码里使用Resource.Load&或 LoadAll 函数,获得原型对象。
指定prefab时不需要指定扩展名(.prefab),形式如下:
GameObject prototype = Resource.Load(&prefabName&) as GameO
可以有任意数量的resources文件夹,怀疑是Resource类初始化的时候会搜集所有resources文件夹里的文件名。
方式三:加载到场景
一般我们制作Perfab的时候,都是在Hierarchy视图里创建GameObject,然后再搭建Prefab。
事后根据需要删除这个原始的GameObject。
因此我们可以保留这个GameObject,然后在场景加载后Find这个对象(代码方式),或者使用脚本public字段(编辑器方式)。
使用方式一更符合unity的风格吧。
我使用方式二,因为我是程序员~~想一切用代码来控制。
方式三比较罗嗦了。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:816704次
积分:6330
积分:6330
排名:第2606名
原创:85篇
转载:23篇
译文:23篇
评论:180条
(1)(3)(1)(5)(3)(1)(1)(20)(1)(1)(1)(3)(3)(1)(2)(1)(6)(1)(2)(1)(4)(3)(6)(3)(1)(3)(1)(1)(3)(1)(1)(1)(3)(1)(1)(3)(3)(2)(9)(2)(5)(12)(7)首先用vc建立一个dll工程
然后在里面建立一个testunity.h。内容如下
extern "C" int _declspec(dllexport)testunity();
保存,ok,在建立一个testunity.cpp,代码如下:
#include "testunity.h"
int testunity()
return 0;//这是函数,里面可以写你想要实现的任何功能
然后编译、组建。就生成了testunity.dll文件。然后再把这个文件放在你的unity工程的assert的Plugins(如果没有这个文件,那你就要新建了,呵呵)。
然后在unity里面新建C#文件dlltest。代码如下
using UnityE
using System.C
using System.Runtime.InteropS
public class dlltest : MonoBehaviour {
[DllImport ("testunity")]
private static extern int testunity();
// Use this for initialization
int i=testunity();
void Start () {
// Update is called once per frame
void Update () {
然后再把这个文件在unity里面拖到camera里面就ok了。
然后运行,就可以实现了哈。呵呵
这是小弟的第一个教程,当然也是简单的教程
阅读(...) 评论()

我要回帖

更多关于 unity3d 动态生成模型 的文章

 

随机推荐