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;
本文在表述或者代码方面如果有问题,欢迎指正(站内信或者评论都可以),我会及时修改
老样子,先来一个链接
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;
本文在表述或者代码方面如果有问题,欢迎指正(站内信或者评论都可以),我会及时修改
相关文章推荐
- 由Unity發佈到Google Play的步驟
- unity, eulerAngle
- AssetBundle
- 9.球体阴影
- [UnityShader3]局部动态效果
- 使用multi_compile编译Shader的多个版本
- 理解 Unity3D RenderWithShader Api
- unity ios应用名称多语言本地化
- Unity ipv6的支持
- Unity3D之扩展屏功能
- Unity Shader Example 12 (Bloom 高光)
- 面试笔试杂项积累-Unity
- unity 5.x android发布注意事项
- Unity3D功能嵌入到Android上
- Unity3D之C#用Socket传数据包
- 【Unity3D自学记录】Unity5之GI设置简介
- 【Unity3D自学记录】Unity5之实时GI环境光
- Unity对象的简单平移与旋转
- Unity游戏界面解决方案: PSD For UGUI
- unity3d通过Application.version返回的是unity版本号5.3.4f1