小尝试
-
在UnityHub里,新建一个项目 -
建一个Object“Marker” (a)右单击“Hierarchy”栏的空白处 (b)从菜单里选择"Create Empty",命名为“TheSimplestGame” (c) 将鼠标移动到“TheSimplestGame”上右单击,从菜单里选择“3D Object”>“Cube” (d)在有半边IDE的"Project"栏中“Assets”里面创建一个新的文件夹,命名为"Scripts". (e)将鼠标移动到"Scripts"上右单击,从菜单里选择“Create”>“C# Scripts” (f)将新建的C# Script拖至"Marker",成为其Child 文件。查看关联是否成功:左单击"Marker",在“Inspector”里会找到Script相关的“Component” -
现在修改Main.cs 中的代码,就可以运行Unity了(注意是在Unity里面运行,而不是在vs code里运行):
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class main : MonoBehaviour
{
void Start(){}
void Update(){}
void OnDisable() {Debug.Log("Bye");}
void OnEnable() { Debug.Log("Hi")}
}
自定义object 的属性
添加两个public variables,这两个属性就会显示在Unity里。只有当属性带有“public”才行。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class main : MonoBehaviour
{
public string gameName = "夜游神";
public int age = 26;
void Start(){}
void Update(){}
void OnDisable() {Debug.Log("Bye");}
void OnEnable() { Debug.Log("Hi")}
}
这样以后,属性就可以直接在Unity里改,而C# 里的当作是一个示例。
C# 访问修饰符
public:同一程序集中的任何其他代码或引用该程序集的其他程序集都可以访问该类型或成员。 某一类型的公共成员的可访问性水平由该类型本身的可访问性级别控制。
private:只有同一 class 或 struct 中的代码可以访问该类型或成员。
protected:只有同一 class 或者从该 class 派生的 class 中的代码可以访问该类型或成员。
internal:同一程序集中的任何代码都可以访问该类型或成员,但其他程序集中的代码不可以。
protected internal:该类型或成员可由对其进行声明的程序集或另一程序集中的派生 class 中的任何代码访问。
private protected:该类型或成员可以通过从 class 派生的类型访问,这些类型在其包含程序集中进行声明。
C# NameSpace
player.cs
using System;
namespace Beginning.CSharp
{
public struct Player {
public string name;
}
}
main.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class main : MonoBehaviour
{
public string gameName = "夜游神";
public int age = 26;
void Start(){
player = new Beginning.CSharp.Player();
player.name = "007";
}
void Update(){}
void OnDisable() {Debug.Log("Bye");}
void OnEnable() { Debug.Log("Hi")}
}
Object运动
例1
- 关联后的Object,通过“gameObject”去更改对应属性(也可以不用,在下一个例子)。
- 关联的Object可以有用Vector2D, Vector3D重写坐标.(Update method里 )
- 在关联Object的Unity“Inspector”栏中添加新的components,比如例子中的“Rigidbody”,可以在Script中引用和运用。
public class main : MonoBehaviour
{
public string gameName = "夜游神";
public int age = 26;
Beginning.CSharp.Player player;
public Vector2 cord2D;
public Vector3 cord3D;
public float speed = 10f;
void Start()
{
Rigidbody rb = GetComponent<Rigidbody>();
if (rb != null){rb.AddForce(Vector3.up * 500f);}
}
void Update(){}
void OnDisable() {Debug.Log("Bye");}
void OnEnable() {Debug.Log("Hi");}
例2
- 不用“gameObject”更改,直接使用“Inspector”栏中的属性“transform”
- 以下例子可以让方块移动起来(运行unity后,按上下左右键)
public class main : MonoBehaviour
{
public string gameName = "夜游神";
public int age = 26;
public Vector2 cord2D;
public Vector3 cord3D;
public float speed = 10f;
void Start(){}
void Update(){
transform.Translate(Input.GetAxis("Horizontal")*Time.deltaTime*speed, 0,Input.GetAxis("Vertical") * Time.deltaTime * speed);
}
void OnDisable() {Debug.Log("Bye");}
void OnEnable() {Debug.Log("Hi");}
超多Objects控制
|