游戏开发中常用Api

文章目录

  • Windows PowerShell
    • 1.PowerShell的执行策略
  • Git_Api
    • 1.初始化仓库
    • 2.设置全局邮箱和用户名
    • 3.ssh相关操作
      • 3.1.检查是否存在ssh
      • 3.2.生成ssh
      • 3.3.测试和仓库的ssh连接
    • 4.与远程仓库的操作
      • 4.1.连接远程仓库
      • 4.2.取消连接
      • 4.3.拉取代码
      • 4.4.提交相关
    • 5.分支操作
      • 5.1.修改要提交的分支
      • 5.2.合并分支到主分支(前提条件:你现在是主分支)
  • Unity_Api
    • 1.Input [输入类]
      • 1.1.获取鼠标按键&位置
      • 1.2.获取键盘按键
    • 2.MonoBehaviour[Mono行为类]
      • 2.1.一些生命周期函数
      • 2.2.碰撞函数
      • 2.3.触发函数
      • 2.4.GameObject对象
      • 2.5.组件启用和禁用
      • 2.6.延迟调用 Invoke()
      • 2.7.协程方法
      • 2.8.发送消息
    • 3.GameObject[游戏物体类]
      • 3.1.[string] name 名字字段
      • 3.2.查找GameObject对象的函数
      • 3.3.获取当前游戏物体上的某个组件对象
      • 3.4.控制游戏物体显示
      • 3.5.实例化生成
    • 4.Debug
      • 4.1.在控制台输出信息.
      • 4.2.两点之间画线 DrawLine()
    • 5.Transform[变换组件]
      • 5.1.位置
      • 5.2.旋转
      • 5.3.获取物体自身坐标系的三个正方向
      • 5.4.旋转和移动的函数
      • 5.5.获取子物体
      • 5.6.更改角色面部朝向
      • 5.7.绕某个点旋转
    • 6.Rigidbody[刚体组件]
      • 刚体睡眠
    • 7.Vector3[三维向量]
    • 8.Quaternion
    • 9.Collision
    • 10.Collider
    • 11.Text & TMP_Text
    • 12.Button
      • 12.1.点击绑定事件
    • 13.Color
    • 14.Color32
    • 15.LineRenderer
    • 16.AudioSource
      • 1.播放和停止
      • 2.在某个地方播放
    • 17.资源加载 Application
      • Resources
      • persistentDataPath
      • streamingAssetsPath
      • 目前是否是编译器,不是打包后
    • 18.Camera
    • 19.物理射线
    • 20.Time
    • 21.Mathf
      • 平滑阻尼
    • 22.Character Controller
      • 移动
    • 23.Iput控制面板上的操作
    • 24.Animator动画控制面板
      • 1.过度条件的获取和赋值
      • 2.Ik
      • 3.转换成哈希码
    • 25.Unity的特性
      • 该脚本挂载的同时挂载另一个组件
    • 26.导航_NavMeshAgent
      • 1.设置目的地
      • 2.目的地属性
      • 3.距离目标点剩余距离
      • 4.到距离目标点多远的距离停止
    • 27.LayerMask
      • 获取某层的序号
    • 28.Cursor(鼠标指针操作)
      • 鼠标锁定模式
      • 鼠标是否显示
    • UGUI
      • 1.通过拖拽事件改变图片位置
      • 2.Image
        • 填充属性
      • 3.RectTransform
        • 将小怪的位置(3D 位置)转换为屏幕位置(2D 位置);
        • UGUI 更改图片的宽和高
        • 修改UI的位置(偏移量)
      • 4.Button
        • 不同状态的按钮图片
      • 5.eventData
        • 得到鼠标指针最终停留所在的游戏物体
      • 6.CanvasGroup 组件
        • 以控制当前的 UI 游戏物体是否接收射线的碰撞
    • Socket
      • 服务器端客户端通用方法
        • 创建socket对象
  • lua
    • 基础语法
      • 获取一个变量的类型
    • 字符串
      • 字母大小写转换
      • 字符串反转
      • 字符串长度
      • 字符串替换
      • 字符串格式化
    • table 表
      • **增加元素**
      • 移除元素
      • table 长度
    • Metatable 元表
      • 关联两个表[将表 B 设置成表 A 的元表],需要用一个新的函数:
      • 是否存在元表
    • 引入资源
      • require
      • dofile (引入整个lua文件)
    • LuaInterface(c#中调用lua)
      • 实例化一个lua解析器对象
      • 变量的声明与访问.
      • 读取Lua文件
      • 获取各个类型数据
    • luanet (Lua 内访问 C#代码 )同文件夹下
  • C#
    • iO
      • 读取文件
      • 删除文件
      • 写入文件
      • 变量组合成路径

Windows PowerShell

1.PowerShell的执行策略

在Windows操作系统中,PowerShell的执行策略决定了哪些类型的脚本可以被执行。执行策略可以是以下几种之一:

  • Restricted:不允许任何脚本执行。
  • AllSigned:只允许执行已签名的脚本。
  • RemoteSigned:本地脚本可以执行,但来自互联网的脚本必须已签名。
  • Unrestricted:允许执行所有脚本。

如果你想要关闭远程脚本执行权限,可以将执行策略设置为 Restricted。以下是关闭远程脚本执行权限的步骤:

打开Windows PowerShell作为管理员

  • 在开始菜单中搜索“PowerShell”。
  • 右键点击“Windows PowerShell”,选择“以管理员身份运行”。

查看当前的执行策略

  • 在PowerShell窗口中输入以下命令并回车:

    Get-ExecutionPolicy
    
  • 这将显示当前的执行策略。

更改执行策略

  • 如果当前执行策略为“RemoteSigned”或“Unrestricted”,你可以通过以下命令将执行策略设置为“Restricted”:

    Set-ExecutionPolicy Restricted
    
  • 系统将提示你确认是否要更改执行策略。输入“Y”然后按 Enter 确认。

确认更改

  • 如果你确定要更改执行策略,输入“Y”然后按 Enter 确认。

更改执行策略后,只有本地脚本文件可以执行,而来自互联网的脚本将被阻止执行。这有助于提高系统的安全性,防止潜在的恶意脚本执行。

请注意,更改执行策略可能会影响某些脚本的执行,特别是那些需要远程执行的脚本。在更改执行策略之前,请确保你了解可能的影响,并且只在必要时更改执行策略。如果你需要执行远程脚本,可以考虑将执行策略更改为“RemoteSigned”或“AllSigned”,并确保你信任的脚本都已签名。

Git_Api

1.初始化仓库

 git init     在当前目录创建一个新的Git仓库。 

2.设置全局邮箱和用户名

git config --global user.name “你在GitHub上的用户名”
git config --global user.email “你的邮箱”

3.ssh相关操作

3.1.检查是否存在ssh

cd ~/.ssh

3.2.生成ssh

ssh-keygen -t rsa -C "你的邮箱"

3.3.测试和仓库的ssh连接

ssh -T git@github.com

4.与远程仓库的操作

4.1.连接远程仓库

git remote add origin "你的仓库SSH地址"

4.2.取消连接

git remote remove <remote-name>
git remote remove origin

4.3.拉取代码

git pull origin master

4.4.提交相关

# 检查暂存区文件
git status# 添加到暂存区
git add .# 提交到本地仓库 
git commit -m "你的备注信息"# 提交到远程仓库
git push -u origin master

5.分支操作

5.1.修改要提交的分支

git checkout <branch-name>

5.2.合并分支到主分支(前提条件:你现在是主分支)

git merge "你要合并的分支名"

Unity_Api

1.Input [输入类]

1.1.获取鼠标按键&位置

/*获取鼠标按键三种状态.[0:左键  1:右键  2:中键]*/[s][bool] GetMouseButtonDown(int)  //按下某键的一瞬间,返回true.[s][bool] GetMouseButton(int)    //按下某键后,持续返回true.[s][bool] GetMouseButtonUp(int)   //抬起某键的一瞬间,返回true.[s][Vector3] mousePosition          //只读属性,鼠标在屏幕上的位置.

1.2.获取键盘按键

/*获取键盘按键三种状态.*/
[s][bool] GetKeyDown(KeyCode)       //按下某键的一瞬间,返回true.
[s][bool] GetKey(KeyCode)           //按下某键后,持续返回true.
[s][bool] GetKeyUp(KeyCode)         //抬起某键的一瞬间,返回true.

2.MonoBehaviour[Mono行为类]

2.1.一些生命周期函数

[void] Awake()                        //对象被创建时,执行一次.
[void] OnEnable()                     //脚本组件启用时,执行一次[多次].
[void] Start()                        //项目运行之后,执行一次.
[void] FixedUpdate()                 //固定更新,0.02秒执行一次.
[void] Update()                       //每帧执行一次,一秒钟大约60次.
[void] LateUpdate()                  //在Update之后,延迟执行.
[void] OnDisable()                   //脚本组件禁用时,执行一次[多次].
[void] OnDestroy()                   //脚本组件被销毁时,执行一次.

2.2.碰撞函数

[void] OnCollisionEnter(Collision)	 //碰撞开始,执行一次.
[void] OnCollisionStay(Collision)	 //碰撞进行中,每帧都会执行.
[void] OnCollisionExit(Collision)	 //碰撞结束,执行一次.

2.3.触发函数

[void] OnTriggerEnter(Collder)	    //触发开始,执行一次.
[void] OnTriggerStay(Collder)	    //触发进行中,每帧都会执行.
[void] OnTriggerExit(Collder)	    //触发结束,执行一次.

2.4.GameObject对象

[GameObject] gameObject  //只读属性,当前脚本组件所挂载到的游戏物体对象.

2.5.组件启用和禁用

[bool] 组件对象.enabled   //读写属性,控制组件启用[true]与禁用[false].

2.6.延迟调用 Invoke()

[void] Invoke(string, float)	    //延迟调用,延迟x秒,调用某方法.
[void] InvokeRepeating(string, float, float)	 //延迟并重复调用.
[void] CancelInvoke()	          //取消当前脚本中所有的延迟调用.
[void] CancelInvoke(string)	    //取消当前脚本中指定的延迟调用.

2.7.协程方法

IEnumerator   //迭代器接口,协程方法的返回值类型.
yield return  //协程方法返回.
new WaitForSeconds(float)   //延迟等待x秒.
[Coroutine] StartCoroutine(string)	        //开启指定协程方法.
[Coroutine] StartCoroutine(string, object) //开启协程,并传递参数.
[void] StopCoroutine(string)	      //停止指定协程方法.
[void] StopAllCoroutines()	      //停止当前脚本中所有协程方法.

2.8.发送消息

[void] SendMessage(string)	            //给自身游戏物体发送消息.
[void] SendMessage(string, object)        //方法名 + 参数.
[void] BroadcastMessage(string)	         //给自身和子物体发送消息.
[void] BroadcastMessage(string, object)  //方法名 + 参数.
[void] SendMessageUpwards(string)	      //给父物体发送消息.
[void] SendMessageUpwards(string, object)	//方法名 + 参数.

3.GameObject[游戏物体类]

3.1.[string] name 名字字段

[string] name        //读写属性,获取当前游戏物体的名称,修改游戏物体名称.

3.2.查找GameObject对象的函数

[s][GameObject] Find(string)   //通过名称查找获取场景内的游戏物体对象.
[s][GameObject[]] FindGameObjectsWithTag(string)   //Tag标签查找.
[s][void] Destroy(Object)         //销毁游戏物体,组件.
[s][void] Destroy(Object, float) //定时销毁游戏物体,组件.

3.3.获取当前游戏物体上的某个组件对象

[T] GetComponent<T>()          //获取当前游戏物体上的某个组件对象.
[T] AddComponent<T>()          //给当前游戏物体添加某个组件对象.

3.4.控制游戏物体显示

[void] SetActive(bool)          //控制游戏物体显示[true]与隐藏[false].

3.5.实例化生成

[s][T]Instantiate<T>(GameObject, Vector3, Quaternion) //实例化.
[s][T]Instantiate<T>(GameObject, Vector3, Quaternion, Transform) //实例化.最后一个参数指定父物体

4.Debug

4.1.在控制台输出信息.

[s][void] Log(object)                  //在控制台输出信息.

4.2.两点之间画线 DrawLine()

[s][void] DrawLine(Vector3, Vector3, Color, float)//两点之间画线

5.Transform[变换组件]

5.1.位置

[Vector3] position              //读写属性,获取位置,修改位置.

5.2.旋转

[Quaternion] rotation           //读写属性,获取旋转数据,修改旋转数据.

5.3.获取物体自身坐标系的三个正方向

[Vector3] forward, right, up   //读写属性,正前方,右方向,正上方.

5.4.旋转和移动的函数

[void] Translate(Vector3, Space)    //选择坐标系,按指定的方向移动. space(wprld/self)代表参考世界/自身坐标系
[void] Rotate(Vector3, float)       //沿固定轴向旋转固定角度.

5.5.获取子物体

[Transform] Find(string)             //在子物体中查找指定物体.
[T[]] GetComponentsInChildren<T>()  //在子物体中查找指定组件

注意:GetComponentsInChildren 会将父物体的 Transform 也一同获取,要从1开始遍历

Transform 组件查找子物体身上的 Transform 组件:

<1>常用格式:

m_Transform.GetComponentsInChildren()

这个 API 默认会查找所有的子物体,包括孙子级别的子物体。且这个 API 不会查找到隐藏的游戏物体。

<2>重载格式:

m_Transform.GetComponentsInChildren(bool)

该方法有一个重载形式,bool 类型,如果填写 true,则该 API 可以查找到隐藏的子物体。

如果我们只想查找获取“儿子级别”的子物体,应该如何操作?

m_Transform.childCount:获取当前游戏物体子物体的个数

m_Transform.GetChild(i):以角标的形式获取子物体

5.6.更改角色面部朝向

[void] LookAt(Vector3); //看向输入位置

5.7.绕某个点旋转

[void]RotateAround(Boss 位置, Y 轴, 角度)

6.Rigidbody[刚体组件]

[void] MovePosition(Vector3)      //移动到指定位置[当前位置+方向].
[void] AddForce(Vector3)          //世界坐标系方向添加力[方向*力度].
[void] AddRelativeForce(Vector3) //物体坐标系方向添加力[方向*力度].

刚体睡眠

[void]Rigidbody.Sleep()//可以让刚体睡眠,也就是立刻停止运动。

7.Vector3[三维向量]

[float]x, y, z                 //公开字段,可以单个读取,不可以单个修改.
/*获取世界坐标系的六个方向*/
[s][Vector3] forward, right, up   //只读属性,前,右,上.
[s][Vector3] back, left, down     //只读属性,后,左,下.
[s][Vector3] zero                  //只读属性,世界原点位置[0,0,0].
[s][Vector3] Lerp(a, b, float t)  //在两个Vector3数据之间插值.
[s][float]magnitude               //向量的模长
[s][Vector]normalized             //标准化向量
//effect.transform.rotation = Quaternion.LookRotation(hit.normal); 一般这么用
[s][float]Distance(v1, v2)       //向量间的距离

8.Quaternion

[Vector3] eulerAngles      //读写属性,将当前四元数转换成向Vector3.
[s][Quaternion] identity   //只读属性,表示无旋转,对应欧拉角[0,0,0].
[s][Quaternion] Euler(Vector3)    //将Vector3转换成四元数.
[s][Quaternion] Lerp(a, b, float t) //在两个Quaternion数据之间插值.

9.Collision

[GameObject] gameObject           //只读属性,物理碰撞到的游戏物体.

10.Collider

[GameObject] gameObject           //只读属性,物理触发到的游戏物体.

11.Text & TMP_Text

/*UGUI组件命名空间:using UnityEngine.UI;  TMP命名空间:using TMPro;*/
[string] text          //读写属性,可以读取以及修改文本组件的显示内容.
[Color] color          //读写属性,获取和修改组件的颜色.

12.Button

12.1.点击绑定事件

/*事件处理方法的格式:私有,无参,无返回值*/
[void] onClick.AddListener(事件处理方法) //按钮点击绑定事件处理方法.

13.Color

[s][Color] red, green, blue  //只读属性,返回对应的颜色.
[Color] Color(r, g, b, a)    //构造方法,参数取值范围是0~1,float类型.

14.Color32

[Color32] Color32(r, g, b, a) //构造方法,参数取值范围是0~255,byte类型.

15.LineRenderer

[int] positionCount                //读写属性,获取和修改位置点的个数.
[void] SetPosition(int, Vector3) //给位置数组对应下标的元素赋值.

16.AudioSource

1.播放和停止

[void] Play()                      //播放音频.
[void] Stop()                      //停止播放.

2.在某个地方播放

[s][void] PlayClipAtPoint(AudioClip, Vector3) //在指定位置播放音效.

17.资源加载 Application

Resources

[s][T] Load<T>(string)            //指定文件路径,加载单个资源.
[s][T[]] LoadAll<T>(string)       //指定文件夹路径,加载多个资源.

persistentDataPath

[string]Application.persistentDataPath

streamingAssetsPath

[string]Application.streamingAssetsPath,

目前是否是编译器,不是打包后

[bool]Application.isEditor 

18.Camera

[s][Camera] main          //只读属性,获取“主摄像机”的Camera组件对象.
[Ray] ScreenPointToRay(Vector3) //使用屏幕上的一个位置点创建射线对象.

19.物理射线

Ray                                //结构体,物理射线.
RaycastHit                        //结构体,存放物理射线碰撞信息.
[Collider] collider  //RaycastHit对象只读属性,射线碰撞到的碰撞体组件.
[Vector3] point       //RaycastHit对象读写属性,获取碰撞位置点.
[s][bool] Physics.Raycast(Ray, out RaycastHit) //物理射线检测方法.
[s][float] Random.Range(float, float)   //在最小值最大值之间取随机数.

20.Time

[s][float] time         //只读属性,时间,项目从开始运行到现在的总时长.
[s][float] deltaTime   //只读属性,增量时间,渲染完一帧所需要的时长.
[s][float] timeScale   //读写属性,时间缩放,控制虚拟时间中的时间流速.

21.Mathf

[float] Deg2Rad        //角度转弧度常量. 值:0.0174.
[float] Rad2Deg        //弧度转角度常量. 值:57.295.
[s][float] Lerp(float a, float b, float t)  //数学类插值运算.

平滑阻尼

[float]Mathf.SmoothDamp(current, target, ref currentVelocity, smoothTime);
//Current:动画的运动范围;
//Target:动画的最终位置,也就是 0;
//currentVelocity:这个数据我们保持为 0 即可;
//smoothTime:用当前动画时长,减去当前时长。

例子:

 /// <summary>/// 尾巴颤动动画./// </summary>private IEnumerator TailAnimation(){//动画执行时长.float stopTime = Time.time + 1.0f;//动画的颤动范围.float range = 1.0f;float vel = 0;//长矛动画开始的角度.Quaternion startRot = Quaternion.Euler(new Vector3(Random.Range(-5.0f, 5.0f), Random.Range(-5.0f, 5.0f), 0));while (Time.time < stopTime){//动画的核心.m_Pivot.localRotation = Quaternion.Euler(new Vector3(Random.Range(-range, range), Random.Range(-range, range), 0)) * startRot;//平滑阻尼.range = Mathf.SmoothDamp(range, 0, ref vel, stopTime - Time.time);yield return null;}

22.Character Controller

移动

 SimpleMove(Vector3)://简单移动Move(Vector3):移动 //更为复杂的一种运动,每次都绝对运动,不会应用重力。

23.Iput控制面板上的操作

[float]Input.GetAxis(“轴向名称”); //取得轴向的值

24.Animator动画控制面板

1.过度条件的获取和赋值

Animator.Set。。。(name, value; //通过 Animator 给过渡条件赋值
Animator.Get。。。(name, value; //获取某过渡条件的值

2.Ik

[void] OnAnimatorIK(int index)//类似于我们之前的 start() OnTriggerEnter(),都是 Unity 内置的事件函数,由引擎自己维护和调用,这个函数主要用于处理 IK 相关的逻辑
//设置权重
Animator.SetIKPostionWeight(AvatarIKGoal,int);
Animator.SetIKRotationWeight(AvatarIKGoal,int);
//绑定要Ik的物体的位置
Animator.SetIKPosition(AvatarIKGoal,Vector3);
Animator.SetIKRotation(AvatarIKGoal,Quaternion);

3.转换成哈希码

[int]Animator.StringToHash(string);  //Unity引擎中Animator组件的一个方法,它用于将一个字符串转换为一个整数哈希值。这个哈希值是基于字符串内容的,用于在动画系统中唯一标识一个动画状态或参数。

在Unity中,当你使用Animator组件来控制角色动画时,你通常会引用动画状态机中的状态或参数。这些状态和参数在Animator组件中是以字符串形式定义的。为了提高性能和效率,Unity内部会将这些字符串转换为整数哈希值,因为整数比较比字符串比较要快得多。

当你使用 Animator.StringToHash(string) 方法时,你需要传入一个字符串参数,该方法会返回一个整数哈希值。这个哈希值可以用于以下场景:

Animator animator;
string stateName = "Walk"; // 假设这是动画状态机中的一个状态名称// 获取状态的哈希值
int stateHash = Animator.StringToHash(stateName);// 触发状态
animator.SetTrigger(stateHash);

25.Unity的特性

[HideInInspector] //这个特性用于隐藏字段或属性,使其在Unity编辑器的Inspector面板中不可见。这对于不想让某些字段被编辑器直接访问的私有变量非常有用。[SerializeField] //这个特性用于将私有字段序列化并显示在Inspector面板中,即使它是私有的。这允许开发者在不公开字段的情况下,仍然可以在编辑器中修改它的值。[Header] //这个特性用于在Inspector面板中为字段添加一个标题,以提高代码的可读性。[Range(min, max)] //这个特性用于限制一个浮点数或整数字段的值在指定的最小值和最大值之间。[Tooltip] //这个特性用于为字段添加一个工具提示,当鼠标悬停在Inspector面板中的字段上时显示。[Space] //这个特性用于在Inspector面板中添加垂直空间,以分隔不同的字段。[ContextMenu] //这个特性用于为字段或方法添加一个上下文菜单项,可以在编辑器中通过右键点击来调用。[ExecuteInEditMode] //这个特性用于在编辑模式下执行脚本,允许在编辑器中测试脚本的行为。[RequireComponent] //这个特性用于确保GameObject在添加脚本时,也自动添加所需的组件。[AddComponentMenu] //这个特性用于将自定义组件添加到Unity编辑器的组件菜单中。[CreateAssetMenu] //这个特性用于创建自定义的Asset菜单项,允许用户通过Unity编辑器创建自定义的资源。

该脚本挂载的同时挂载另一个组件

[RequireComponent(typeof(ObjectPool))] //挂载该脚本的同时挂载ObjectPool组件

26.导航_NavMeshAgent

1.设置目的地

[void] SetDestination(Vector)

2.目的地属性

[Vector3] destination //读写属性,物体最终导航到的目的地

3.距离目标点剩余距离

[float]remainingDistance

4.到距离目标点多远的距离停止

[float]stoppingDistance

27.LayerMask

获取某层的序号

[string]LayerMask.NameToLayer("Env") 

28.Cursor(鼠标指针操作)

鼠标锁定模式

[CursorLockMode]lockState

鼠标是否显示

[bool]visible

UGUI

1.通过拖拽事件改变图片位置

[Vector3]RectTransformUtility.ScreenPointToWorldPointInRectangle(m_RectTransform,eventData.position,eventData.enterEventCamera,out pos); //屏幕坐标点转化为世界坐标点;

其中:

m_RectTransform //游戏物体的 RectTransform ;

eventData.position //当前坐标位置点;

eventData.enterEventCamera //事件摄像机;

out pos //最终计算得到的世界坐标位置;

2.Image

填充属性
[float]fillAmount

3.RectTransform

将小怪的位置(3D 位置)转换为屏幕位置(2D 位置);
[Vecteo2]RectTransformUtility.WorldToScreenPoint(Camera.main, cubePos);//WorldToScreenPoint:世界位置转换为屏幕位置. 
UGUI 更改图片的宽和高

API:

[void]RectTransform.SetSizeWithCurrentAnchors(轴向,);

参数:RectTransform.Axis.Horizontal/Vertical :对应宽和高.

修改UI的位置(偏移量)
[Vector2]offsetMin[Vector2]offsetMax//RectTransform.offsetMin = new Vector2(Left, Bottom);
//RectTransform.offsetMax = new Vector2(Right, Top)。
//【EG】GetComponent<RectTransform>().offsetMin = new Vector2(0, 0);

4.Button

不同状态的按钮图片
[SpriteState]GetComponent<Button>().spriteState.xxxxx
//Button 组件的 spriteState 属性中,可以找到按钮的不同状态图片

5.eventData

注意:必须导入命名空间using UnityEngine.EventSystems;改属性是对应接口的参数(IBeginDragHandler, IDragHandler, IEndDragHandler)

得到鼠标指针最终停留所在的游戏物体
[GameObject]eventData.pointerEnter
//该属性会返回一个 GameObject,这个对象就是目标游戏物体。但最终“碰撞”到的就是我们拖拽中的物品

6.CanvasGroup 组件

以控制当前的 UI 游戏物体是否接收射线的碰撞
[bool]m_CanvasGroup.blocksRaycasts

Socket

服务器端客户端通用方法

创建socket对象
Socket socket = new Socket(地址类型,Socket 类型,协议类型);

参数介绍:

地址类型:使用 IPv4 地址协议,AddressFamily.InterNetwork

Socket 类型:使用流式类型,SocketType.Stream

协议类型:使用 TCP 协议类型,ProtocolType.Tcp

lua

基础语法

获取一个变量的类型

type()

字符串

字母大小写转换

string.upper( 字符串变量 ):字母全部转大写格式;string.lower( 字符串变量 ):字母全部转小写格式;

字符串反转

string.reverse( 字符串变量 ):将字符串进行位置反转。

字符串长度

string.len( 字符串变量 ):返回字符串的长度. 

注意:单个字母,数字,符号长度都为 1;单个汉字长度为 2。

字符串替换

string.gsub(原始字符串,旧字符串,新字符串,[替换次数]

在原始字符串中查找旧字符串,如果找到了,就用新字符串把旧的替换掉;替换次数可以不写,则表示全部替换。

字符串格式化

string.format()

string.format(字符串格式,变量 1,变量 2,变量 N)

  • %s:代表字符串.

  • %d:表示一个整数数字

  • %f:表示一个小数

    保留有效小数位数:%0.1f,0.1 是保留 1 位小数,%0.2f 是保留两位小数;

    e.g:

print(string.format("显示:%0.1f",0.898989))

table 表

增加元素

table.insert(表名, [位置],)

往指定的位置增加元素,如果不写位置,默认往最后一个位置增加。

这个方式适合“数组模式”,不太适合“键值对模式”。

键值对就用:表名[‘键’] = 值 的方式添加即可。

移除元素

table.remove(表名, [位置])

如果不写位置,默认移除最后一个元素,如果位置值超出范围,不会报错,也不

会有元素被移除。

这个方式适合“数组模式”,不能用于“键值对模式”。

键值对就用:表名[‘键’] = nil 的方式移除即可。

table 长度

table.getn(表名)

返回 table 表的长度。

这个方式适合“数组模式”,不能用于“键值对模式”。

键值对就用:迭代器迭代,然后累加一个变量的方式获得长度。

Metatable 元表

关联两个表[将表 B 设置成表 A 的元表],需要用一个新的函数:

setmetatable(表 A, 表 B) [见图]

是否存在元表

getmetatable(表名)

如果表名有元表,就返回元表的类型和地址;如果没有元表,则返回一个 nil。

引入资源

require

require("path") --引入指定模块.
require "path"

dofile (引入整个lua文件)

dofile("path")
--dofile("..\\myp\\Person.lua")

LuaInterface(c#中调用lua)

using LuaInterface;

实例化一个lua解析器对象

Lua lua = new Lua();

变量的声明与访问.

lua.DoString("LuaScripts")
//lua.DoString("name = 'Monkey' age = 72 address = 'BeiJing'");

读取Lua文件

lua.DoFile("LuaFile");
//lua.DoFile("Monkey.lua");

获取各个类型数据

string webName = lua.GetString("webName");
double num = lua.GetNumber("num");
LuaFunction LuaHello = lua.GetFunction("LuaHello");
LuaHello.Call();

luanet (Lua 内访问 C#代码 )同文件夹下

--导入luanet.dll,语法格式:require “luanet”
require "luanet"--获取程序集,语法格式:luanet.load_assembly(“程序集名”)
luanet.load_assembly("three")
luanet.load_assembly("System")--获取类型,语法格式:变量名= luanet.import_type(“程序集名.类名”)
Calc = luanet.import_type("three.Calc")
Console = luanet.import_type("System.Console")

C#

iO

  • path : 文件路径

读取文件

[string]File.ReadAllText(string path);

删除文件

[void]File.Delete(path);

写入文件

StreamWriter sw = new StreamWriter(path);
[void]sw.Write(str);
[void]sw.Close();

变量组合成路径

[string]Path.Combine(Application.streamingAssetsPath, fileName + ".txt")//项目位置/Assets/StreamingAssets\{fileName}.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/35546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

洗地机怎么选择最好?四大洗地机精选放心入手

在当今生活节奏飞快的社会中&#xff0c;人们越来越渴望拥有一款高性能、实用方便的家用洗地机&#xff0c;能够帮助我们节省大量的清洁时间。因为洗地机它是吸尘器的升级版&#xff0c;清洁力比扫地机器人更强&#xff0c;洗地机通过高速旋转的风机&#xff0c;产生超大吸力&a…

java-冒泡排序 2

### 9. 冒泡排序的变种冒泡排序有许多变种&#xff0c;例如鸡尾酒排序&#xff08;Cocktail Shaker Sort&#xff09;&#xff0c;它是冒泡排序的双向版本。鸡尾酒排序在每次遍历时&#xff0c;先从左到右&#xff0c;再从右到左&#xff0c;双向 地“冒泡”&#xff0c;使得排…

Unity之HTC VIVE Cosmos环境安装(适合新手小白)(一)

提示&#xff1a;能力有限&#xff0c;错误之处&#xff0c;还望指出&#xff0c;不胜感激&#xff01; 文章目录 前言一、unity版本电脑配置相关关于unity版本下载建议&#xff1a;0.先下载unity Hub1.不要用过于旧的版本2.不要下载最新版本或者其他非长期支持版本 二、官网下…

chatGPT?是什么,到底用了什么技术呢?

本文尽可能精简的讲解openai的chatgpt 文章目录 前言一、chatgpt是什么&#xff1f;1. 基础架构2. 训练过程3. 应用场景4. 技术特点5. 局限性 二、树形图ChatGPT 大致架构 总结 前言 随着人工智能的不断发展&#xff0c;Ai对话工具的使用也越来越广泛。由国外openai推出的chatg…

百日筑基第二天-随便学点

百日筑基第二天-随便学点 慢SQL发生的原因 缺乏索引&#xff1a;当查询中涉及的列没有合适的索引时&#xff0c;数据库管理系统可能需要执行全表扫描来查找匹配的行&#xff0c;这会大大增加查询时间。查询条件不当&#xff1a;复杂的查询条件、不必要的JOIN操作、过多的子查…

生命在于学习——Python人工智能原理(4.4)

三、Python的数据类型 3.2 Python的组合数据类型 特点&#xff1a;表示多个元素的组合&#xff0c;可以包含不同类型的元素&#xff0c;甚至是其他的组合数据类型。 在内存中通常需要额外的空间来存储元素间的关系。 组合数据类型能够将多个同类型或不同类型的数据组织起来&a…

stencil 简介

stencil 简介 stencil 出现的动机为何要学习 stencil 呢&#xff1f; stencil 是一个生成 Web Component 的编译器&#xff0c;但是其具有自己的特殊语法&#xff0c;使用 stencil 生成的组件可跨框架和在 html 中使用。 其号称结合了最流行框架(angular、react、vue)中的最好…

出版发行企业从传统分销到网格化营销的变革之路(AMT企源)

引言&#xff1a; 本文为该系列文章的第一篇&#xff0c;旨在介绍当前出版发行行业&#xff0c;尤其是各省级新华书店集团围绕“综合教育服务”和“大文化消费服务”两个领域的业务布局下&#xff0c;如何实现营销模式创新、营销组织创新&#xff0c;以推动新华书店集团从传统…

浮动IP绑定主机步骤

文章目录 1&#xff0c;查看本机的原有IP2&#xff0c;绑定浮动IP3&#xff0c;验证绑定情况4&#xff0c;解绑浮动IP 1&#xff0c;查看本机的原有IP ifconfig得到本机的ip是192.168.10.128 2&#xff0c;绑定浮动IP ifconfig ens33:1 192.168.10.10 netmask 255.255.255.0…

墨迹天气与AI数据湖的集成案例(集易连平台)

客户介绍 客户方为国内某皮具生产企业&#xff0c;年设计版型数千款&#xff0c;全国销售门店数一千多家&#xff0c;年销售额达20亿。该AI项目目的是将订单数据、用户行为分析、天气数据、门店位置、客流量等等一系列数据作为AI大模型的输入&#xff0c;经过大模型的训练和…

LeetCode刷题之HOT100之打家劫舍

2024/6/26 大家早上好呀&#xff01;今天不热诶&#xff0c;昨天跟镔哥跑了五公里&#xff0c;配速515简直不要太爽啊&#xff0c;跑完后在操场走一圈&#xff0c;正好发小发了群视频过来&#xff0c;聊了半小时。发小一考研二战失利&#xff0c;去干测试&#xff0c;天天累得不…

ROS话题通信机制实操Python

ROS话题通信机制实操Python 创建ROS工程发布方(二狗子)订阅方(翠花)编辑配置文件编译并执行计算图查看Python话题机制节点 ROS话题通信的理论查阅ROS话题通信流程理论 在ROS话题通信机制实现中&#xff0c;ROS master 不需要实现&#xff0c;且连接的建立也已经被封装了&#…

每日一练 - RSTP与STP收敛速度对比

01 真题题目 RSTP 收敛速度比 STP 要快,以下说法正确的是&#xff1f; A. 在 RSTP 中检测拓扑是发生变化只有一个标准.一个非边缘端口迁移到 Forwarding 状态 B. 在 STP 中,为了避免临时环路,至少要等待一个 Forwarding Delay 待全网端口确定,所有端口才能进行转发 C. P/A …

RedHat9 | RAID配置与管理

一、实验环境 1、RAID简介 RAID&#xff08;Redundant Array of Independent Disks&#xff09;&#xff0c;即独立磁盘冗余阵列&#xff0c;是一种数据存储技术。它通过将多个独立的磁盘驱动器组合起来&#xff0c;形成一个逻辑上的整体&#xff0c;从而提高数据存储的性能、…

【Redis】数据持久化

https://www.bilibili.com/video/BV1cr4y1671t?p96 https://blog.csdn.net/weixin_54232666/article/details/128821360 单点redis问题&#xff1a; 数据丢失问题&#xff1a;实现Redis数据持久化并发能力问题&#xff1a;搭建主从集群&#xff0c;实现读写分离故障恢复问题&…

数据分析必备:一步步教你如何用matplotlib做数据可视化(13)

1、Matplotlib 文本 Matplotlib具有广泛的文本支持&#xff0c;包括对数学表达式的支持&#xff0c;对光栅和矢量输出的TrueType支持&#xff0c;具有任意旋转的换行符分隔文本以及unicode支持。Matplotlib包含自己的matplotlib.font_manager&#xff0c;它实现了一个跨平台&a…

和GPT-4这些大模型玩狼人杀,人类因太蠢被票死,真·反向图灵测试

「你看&#xff0c;人类一败涂地了」 这是一次「反向图灵测试」&#xff0c;几个全球最先进的大模型坐在一起&#xff0c;坐着火车唱着歌&#xff0c;但其中混进了人类&#xff1a; 而 AI 的任务&#xff0c;是把这个人类揪出来。 最近&#xff0c;一位昵称「Tore Knabe」的网…

[leetcode]number-of-longest-increasing-subsequence

. - 力扣&#xff08;LeetCode&#xff09; class Solution { public:int findNumberOfLIS(vector<int> &nums) {int n nums.size(), maxLen 0, ans 0;vector<int> dp(n), cnt(n);for (int i 0; i < n; i) {dp[i] 1;cnt[i] 1;for (int j 0; j < i…

转行大模型开发:知识、能力及学习路线详解

引言 随着人工智能和大模型&#xff08;如GPT-4、BERT等&#xff09;技术的快速发展&#xff0c;越来越多的专业人士希望转行进入这一领域。大模型开发涉及复杂的技术体系和多样的应用场景&#xff0c;对从业者的知识和能力提出了较高要求。本文将详细解析转行大模型开发所需的…

详解Alibaba Cloud Linux 3.2104 LTS 64位镜像操作系统

Alibaba Cloud Linux 3.2104是阿里云推出的云原生Linux发行版Alibaba Cloud Linux 3版本&#xff0c;64位操作系统&#xff0c;由阿里云提供免费长期维护更新和漏洞修复&#xff0c;镜像Alibaba Cloud Linux 3.2104 LTS 64位操作系统性能很不错&#xff0c;针对ECS云服务器进行…