您的位置:首页 > 移动开发 > Unity3D

Unity3D 2D入门——第2天:C#,我跟C++有点眼缘

2016-07-14 22:20 344 查看
Unity3D,因为我做的是2D的东西,很多都可以直接用脚本写,所以在构建模型上,先告一段落,我又回到 C# 上来了。

老样子,先来一个链接
http://my.oschina.net/u/1585857/blog/475674
这个链接是 C# 开发 Unity的个教程,先放在这里,我们先往后再退一步

先说说看 C# 基础语法的问题。和C++真的很像有木有。我就把它当成加强版的 C++ 了,更多的去使用了类和命名空间,抛弃了更多C的习惯。

今天主要就是熟悉基本的类型,函数定义,类的定义,还有泛型。因为对C++还算熟悉,感觉过渡挺流畅的。

最头疼的莫过于引用这么个东西了, C#中没有指针这么个蛋疼玩意儿,但是多了个引用更蛋疼。

没有->这种东西,所有类的对象默认都是引用,赋值也都是引用赋值。

所以想要完整copy对象内的数据,就得在赋值时使用拷贝构造函数( Vector2 pt1 = newVector2( pt0 ); ),或者使用深度拷贝。

而深度拷贝也是蛋疼的东西:当类A中含有另一个成员变量类C的时候,还需要声明类A和类C均继承于IClonable,并为A、C实现 Clone方法。然后在赋值的时候,这么写

 Vector2 pt1 = (Vector2) pt0.clone() ; 


。。。。。

说到Clone,再提一下返回值,居然是object,一细查发现所有类(包括自定义的),均继承与此基础类,居然有这种跟MATLAB类似的特性。

另外,泛型方面,我使用了一个List<Vector2>的类型,查了一下添加元素的内容,居然是添加的引用!!!也就是说如果我仅仅想添加值的时候,还需要 listName.Add( new Vector2( 0,0 ) ); 这样写


当然,添加引用也是有好处的,至少不用去写拷贝构造或者深度复制了

C#基础就搞了这些,还有很多不熟悉的,不过对于暂时的脚本使用,应该足够了,换!

回到刚刚的地方,开始看UNITY脚本了,刚刚开始,就看了属性与变量的关系,还有脚本与组件命名的关系,发现Unity真的做的挺细致的,而很强大的一个函数叫做 GetComponent ,他可以获取 Unity 类库中的各类组件(当然这个组件必须属于脚本所应用的GameObject ),用它就可以方便的去修改和获取组件的属性了,语法写在最后,给今天画个句号

GetComponent<Rigidbody2D>().position.x = 10;

本文在表述或者代码方面如果有问题,欢迎指正(站内信或者评论都可以),我会及时修改
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: