查看: 1166|回复: 0
打印 上一主题 下一主题

Unity3D中JavaScript与C#对比(二)

[复制链接]

435

主题

2

听众

6371

积分

高级设计师

Rank: 6Rank: 6

纳金币
6372
精华
0

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2012-9-5 11:59:05 |只看该作者 |倒序浏览
本系列的第二节也会来给你解释一下JavaScript 和C#在unity3d中编程有什么不同,建议你先看第一部分的内容。在这节中,我会给你解释一下如何访问GameObject和组件,这是一个程序员在编写Unity3D脚本时最常见的一个事。那么现在让我们先创建一个名称为“Pawn”的GameObject,并且给他附上“PawnMover”脚本。



    使用JavaScript来获取GameObject很简单,你只需要调用Find()静态方法,并把想要的GameObject的名称作为参数:
private var pawnGO:GameObject;  
function Awake(){     
     pawnGO = GameObject.Find("awn");
}  


用C#也很相似:
using UnityEngine;  
using System.Collections;   
public class PawnGetter : MonoBehaviour {      
private GameObject pawnGO;        
void Awake (){         
         pawnGO = GameObject.Find("awn");   
     }
}  
    在不考虑两种语言的关键字和格式不同的情况下,代码是完全一样的(第一个代码的第四行和第二个代码的第八行是相同的)。不管代码是强类型还是弱类型,GameObject.Find()方法总是会返回一个GameObject值。



    现在,让我们看看如何获得一个GameObject上的组件。假设“PawnMover”组件赋给“Pawn”GameObject,让我们来看看如何使用JavaScript获得“PawnMover”组件:
private var pawnGO:GameObject;  
private var pmSCawnMover;  
function Awake(){      
    pawnGO = GameObject.Find("awn");      
    pmSC = pawnGO.GetComponent("awnMover");  
}  


    基 本上,要获得“PawnMover”组件,我们所需要做的就是从“Pawn”GameObject调用GetComponent()方法,并把所需组件的名称作为参数。除了名称,我们也可以通过组件类型作为参数,但是像上面的例子我们用名字就行了。因为JavaScript是弱类型,返回值为组件,我们不需要把组件给PawnMover类作为结果。在C#中也是一样的:
using UnityEngine;  
using System.Collections;   
public class PawnGetter : MonoBehaviour  {      
private GameObject pawnGO;      
private PawnMover pmSC;        
void Awake(){         
    pawnGO = GameObject.Find("awn");  //returns a CS0266 error
    pmSC = pawnGO.GetComponent("awnMover");//<=returns a CS0266 error         
//this is the right way to do it when using C#        
    pmSC = pawnGO.GetComponent< PawnMover >();      
    }  
}  


    用 C#就不可能只是调用GetComponent()方法并把该组件的名称作为参数了,这样他会导致错误CS0266,也就是说C#不能从一个类型隐型转换 为另一个格式。因为C#属于强类型,我们不能把组件类型转换为PawnMover类型。我们需要调用一个方法传递这个类型,强制 GetComponent()方法返回“PawnMover”对象而不是组件。





    希望大家从这节中了解到一些有用的东西,下节将给大家讲解JavaScript和C#控制GameObject移动时有什么区别。
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-5-5 11:39 , Processed in 0.096284 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部