赞
踩
https://learn.u3d.cn/tutorial/intermediate-gameplay-scripting#603f154d084785002045570e
https://learn.u3d.cn/tutorial/intermediate-gameplay-scripting#603f154d084785002045570e
- 总结:good:很不错的Unity教程网站
- using UnityEngine;
- using System.Collections;
-
- public class Player
- {
- //成员变量可以称为
- //字段。
- private int experience;
-
- //Experience 是一个基本属性
- public int Experience
- {
- get
- {
- //其他一些代码
- return experience;
- }
- set
- {
- //其他一些代码
- experience = value;
- }
- }
-
- //Level 是一个将经验值自动转换为
- //玩家等级的属性
- public int Level
- {
- get
- {
- return experience / 1000;
- }
- set
- {
- experience = value * 1000;
- }
- }
-
- //这是一个自动实现的属性的
- //示例
- public int Health{ get; set;}
- }
- using UnityEngine;
- using System.Collections;
-
- public class Game : MonoBehaviour
- {
- void Start ()
- {
- Player myPlayer = new Player();
-
- //属性可以像变量一样使用
- myPlayer.Experience = 5;
- int x = myPlayer.Experience;
- }
- }
- 总结:知道了变量当作属性使用,使用set、get
- using UnityEngine;
- using System.Collections;
-
- public class TernaryOperator : MonoBehaviour
- {
- void Start ()
- {
- int health = 10;
- string message;
-
- //这是一个三元运算的示例,其中根据
- //变量“health”选择一条消息。
- message = health > 0 ? "Player is Alive" : "Player is Dead";
- }
- }
- 总结:平时代码少写点if else了
Enemy
- using UnityEngine;
- using System.Collections;
-
- public class Enemy
- {
- //静态变量是在类的所有实例之间
- //共享的变量。
- public static int enemyCount = 0;
-
- public Enemy()
- {
- //通过递增静态变量了解
- //已创建此类的多少个对象。
- enemyCount++;
- }
- }
- 总结:静态变量是在类的所有实例之间共享的变量。 原来静态还可以这样;
- 总结:public Enemy() 直接在构造函数中,增加了静态变量,实现数量自增;
Game
- using UnityEngine;
- using System.Collections;
-
- public class Game
- {
- void Start ()
- {
- Enemy enemy1 = new Enemy();
- Enemy enemy2 = new Enemy();
- Enemy enemy3 = new Enemy();
-
- //可以使用类名和点运算符
- //来访问静态变量。
- int x = Enemy.enemyCount;
- }
- }
Player
- using UnityEngine;
- using System.Collections;
-
- public class Player : MonoBehaviour
- {
- //静态变量是在类的所有实例之间
- //共享的变量。
- public static int playerCount = 0;
-
- void Start()
- {
- //通过递增静态变量了解
- //已创建此类的多少个对象。
- playerCount++;
- }
- }
PlayerManager
- using UnityEngine;
- using System.Collections;
-
- public class PlayerManager : MonoBehaviour
- {
- void Start()
- {
- //可以使用类名和点运算符
- //来访问静态变量。
- int x = Player.playerCount;
- }
- }
- 总结:全局静态变量
Utilities
- using UnityEngine;
- using System.Collections;
-
- public static class Utilities
- {
- //可以在没有类对象的情况下调用
- //静态方法。请注意,静态方法无法访问
- //非静态成员变量。
- public static int Add(int num1, int num2)
- {
- return num1 + num2;
- }
- }
UtilitiesExample
- using UnityEngine;
- using System.Collections;
-
- public class UtilitiesExample : MonoBehaviour
- {
- void Start()
- {
- //可以使用类名和点运算符
- //来访问静态方法。
- int x = Utilities.Add (5, 6);
- }
- }
- 总结:静态类,整个工程都能调用了
- 总结:可以在没有类对象的情况下调用 静态方法。请注意,静态方法无法访问 非静态成员变量。
SomeClass
- using UnityEngine;
- using System.Collections;
-
- public class SomeClass
- {
- //第一个 Add 方法的签名为
- //“Add(int, int)”。该签名必须具有唯一性。
- public int Add(int num1, int num2)
- {
- return num1 + num2;
- }
-
- //第二个 Add 方法的签名为
- //“Add(string, string)”。同样,该签名必须具有唯一性。
- public string Add(string str1, string str2)
- {
- return str1 + str2;
- }
- }
SomeOtherClass
- using UnityEngine;
- using System.Collections;
-
- public class SomeOtherClass : MonoBehaviour
- {
- void Start ()
- {
- SomeClass myClass = new SomeClass();
-
- //具体调用的 Add 方法将取决于
- //传入的参数。
- myClass.Add (1, 2);
- myClass.Add ("Hello ", "World");
- }
- }
- 总结:good:这个我已经会了,函数名字一样,参数不同
SomeClass
- using UnityEngine;
- using System.Collections;
-
- public class SomeClass
- {
- //这是一个通用方法。注意通用
- //类型“T”。该“T”将在运行时替换为
- //实际类型。
- public T GenericMethod<T>(T param)
- {
- return param;
- }
- }
SomeOtherClass
- using UnityEngine;
- using System.Collections;
-
- public class SomeOtherClass : MonoBehaviour
- {
- void Start ()
- {
- SomeClass myClass = new SomeClass();
-
- //为了使用此方法,必须
- //告诉此方法用什么类型替换
- //“T”。
- myClass.GenericMethod<int>(5);
- }
- }
- 总结:好像也叫做模板类,
- 总结:public 同一个数据类型的返回值 函数名字<同一个数据类型的>(同一个数据类型的 参数)
GenericClass
- using UnityEngine;
- using System.Collections;
-
- //这是一个通用类。注意通用类型“T”。
- //“T”将被替换为实际类型,同样,
- //该类中使用的“T”类型实例也将被替换。
- public class GenericClass <T>
- {
- T item;
-
- public void UpdateItem(T newItem)
- {
- item = newItem;
- }
- }
GenericClassExample
- using UnityEngine;
- using System.Collections;
-
- public class GenericClassExample : MonoBehaviour
- {
- void Start ()
- {
- //为了创建通用类的对象,必须
- //指定希望该类具有的类型。
- GenericClass<int> myClass = new GenericClass<int>();
-
- myClass.UpdateItem(5);
- }
- }
- 总结:public class GenericClass <T> 个人觉得:提前给类一个数据类型,类似C++中的初始化列表赋值,然后将这个数据类型使用在属性、函数参数类型中
- 总结:
Fruit 类
- using UnityEngine;
- using System.Collections;
-
- //这是基类,
- //也称为父类。
- public class Fruit
- {
- public string color;
-
- //这是 Fruit 类的第一个构造函数,
- //不会被任何派生类继承。
- public Fruit()
- {
- color = "orange";
- Debug.Log("1st Fruit Constructor Called");
- }
-
- //这是 Fruit 类的第二个构造函数,
- //不会被任何派生类继承。
- public Fruit(string newColor)
- {
- color = newColor;
- Debug.Log("2nd Fruit Constructor Called");
- }
-
- public void Chop()
- {
- Debug.Log("The " + color + " fruit has been chopped.");
- }
-
- public void SayHello()
- {
- Debug.Log("Hello, I am a fruit.");
- }
- }
Apple 类
- using UnityEngine;
- using System.Collections;
-
- //这是派生类,
- //也称为子类。
- public class Apple : Fruit
- {
- //这是 Apple 类的第一个构造函数。
- //它立即调用父构造函数,甚至
- //在它运行之前调用。
- public Apple()
- {
- //注意 Apple 如何访问公共变量 color,
- //该变量是父 Fruit 类的一部分。
- color = "red";
- Debug.Log("1st Apple Constructor Called");
- }
-
- //这是 Apple 类的第二个构造函数。
- //它使用“base”关键字指定
- //要调用哪个父构造函数。
- public Apple(string newColor) : base(newColor)
- {
- //请注意,该构造函数不会设置 color,
- //因为基构造函数会设置作为参数
- //传递的 color。
- Debug.Log("2nd Apple Constructor Called");
- }
- }
- 总结:public Apple(string newColor) : base(newColor) base这里指的就是Fruit类,并且低矮用Fruit(string newColor)
FruitSalad 类
- using UnityEngine;
- using System.Collections;
-
- public class FruitSalad : MonoBehaviour
- {
- void Start ()
- {
- //让我们用默认构造函数
- //来说明继承。
- Debug.Log("Creating the fruit");
- Fruit myFruit = new Fruit();
- Debug.Log("Creating the apple");
- Apple myApple = new Apple();
-
- //调用 Fruit 类的方法。
- myFruit.SayHello();
- myFruit.Chop();
-
- //调用 Apple 类的方法。
- //注意 Apple 类如何访问
- //Fruit 类的所有公共方法。
- myApple.SayHello();
- myApple.Chop();
-
- //现在,让我们用读取字符串的
- //构造函数来说明继承。
- Debug.Log("Creating the fruit");
- myFruit = new Fruit("yellow");
- Debug.Log("Creating the apple");
- myApple = new Apple("green");
-
- //调用 Fruit 类的方法。
- myFruit.SayHello();
- myFruit.Chop();
-
- //调用 Apple 类的方法。
- //注意 Apple 类如何访问
- //Fruit 类的所有公共方法。
- myApple.SayHello();
- myApple.Chop();
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。