当前位置: 首页 > news >正文

[Unity] 个人编码规范与命名准则参考

Unity C# 在写的过程中, 和纯 C# 是有很大出入的. 甚至说, Unity C# 就是邪教. 例如它的命名规范与 C# 是不一致的, 而且由于游戏引擎的介入, 编写时的习惯相较于 C# 来讲, 也需要有所改变.

通用编码规范

常见的一些编码规范就不需要过多提及了, 这里只做简单列举.

  • 添加合适的空格和换行, 以使代码变得清晰明确
  • 相同功能或者相同类型的成员尽量放在一起, 例如私有成员的定义写在一起, 公开成员的定义写在一起.

命名准则参考

关于 “不使用” 的规则

  • C# 从来不会使用蛇形命名法, 除了前缀, 不要在你的命名中出现下划线. 这样的名称是不规范的: button_ok
  • C# 从来不会使用匈牙利命名法, 也就是在名称的尾部加上用以标识类型的后缀. 这样的名称是不规范的: frmShop(表示一个商店的窗体)
  • C# 基本不会使用缩写, 除了常用与通用的缩写例如 “HTTP”(Hyper text transfer protocol) 和 “ID”(Identifier) , 不要使用缩写. 这样的名称是不规范的: acc(account), btn(button). 你应该使用它们的全称, 除非它的全称真的很长.

参考: 通用命名约定 - 框架设计指引 | Microsoft Learn


关于 “Unity C# 与 C# 不同之处”

  • Unity C# 标准库的属性(Properties)并没有按照 C# 规范使用大驼峰命名法.

成员命名:

  • 所有公开的成员都应该使用帕斯卡命名法.
    但是对于属性和字段, 你可以考虑使用驼峰命名法, 因为 Unity 就是这么做的. 这个可以根据你的习惯选择.
  • 私有字段成员建议使用下划线前缀驼峰命名法
  • 所有的方法名称都应该使用帕斯卡命名法.
    不论其访问等级是怎样的, 方法都应该使用帕斯卡命名法
  • 所有的方法参数都应该使用驼峰命名法.

类型定义:

  • 所有的类型定义都应该使用帕斯卡命名法
  • 接口定义应该有 ‘I’ 前缀.

关于语义上的建议.

  • 关于游戏对象的控制脚本, 可以以 ‘Controller’ 为后缀命名, 当然, 如果觉得太长, 使用 ‘Ctrl’ 作为后缀也是可以的.
  • 当脚本中需要引用某些游戏对象的时候, 可以将这个字段名添加 ‘Ref’ 后缀来表示这是个游戏对象引用.
  • 当引用的某个游戏对象是专门用来作为另一个游戏对象的父对象的时候, 也就是 “插槽”, 你也可以使用 ‘Slot’ 作为后缀来命名, 这样看到名字就能知道用途.
  • 当引用一个预制体的时候, 可以使用 ‘Prefab’ 后缀来表示这里需要一个预制体.

为什么前面说不使用类型前缀, 而这里又推荐使用后缀. 是因为 Unity 中游戏对象可能是场景中的, 也有可能是预制体. 引用的时候, 字段声明是一模一样的. 只能在名称上加后缀加以区分.

相关文章:

[Unity] 个人编码规范与命名准则参考

Unity C# 在写的过程中, 和纯 C# 是有很大出入的. 甚至说, Unity C# 就是邪教. 例如它的命名规范与 C# 是不一致的, 而且由于游戏引擎的介入, 编写时的习惯相较于 C# 来讲, 也需要有所改变. 通用编码规范 常见的一些编码规范就不需要过多提及了, 这里只做简单列举. 添加合适…...

堆栈与队列算法-以链表来实现队列

目录 堆栈与队列算法-以链表来实现队列 C代码 堆栈与队列算法-以链表来实现队列 队列除了能以数组的方式来实现外,也可以用链表来实现。在声明队列的类中,除了和队列相关的方法外,还必须有指向队列前端和队列末尾的指针,即fron…...

快速入门:使用 Spring Boot 构建 Web 应用程序

前言 本文将讨论以下主题: 安装 Java JDK、Gradle 或 Maven 和 Eclipse 或 IntelliJ IDEA创建一个新的 Spring Boot 项目运行 Spring Boot 应用程序编写一个简单的 Web 应用程序打包应用程序以用于生产环境 通过这些主题,您将能够开始使用 Spring Boo…...

01.CentOS7静默安装oracle11g

CentOS7静默安装oracle11g 一、下载Oracle11g安装包二、开始安装oracle11g三、配置Oracle监听程序四、添加数据库实例五、设置开机启动六、登录后解除锁定 一、下载Oracle11g安装包 下载链接:https://pan.baidu.com/s/1gcLMFGX7-8ju7OoFOFLzQA 提取码:6…...

SASE安全访问服务边缘

自存用: 参考文档: 什么是安全访问服务边缘 (SASE)? | Microsoft 安全 网安人必读 |一文读懂SASE - 知乎...

k8s集群升级

目录 1. 部署cri-docker (所有集群节点) 2. 升级master节点 3. 升级worker节点 4. 部署containerd 1. 部署cri-docker (所有集群节点) k8s从1.24版本开始移除了dockershim,所以需要安装cri-docker插件才能使用docker …...

redis原理 主从同步和哨兵集群

主从库如何实现数据一致 我们总说的 Redis 具有高可靠性,又是什么意思呢?其实,这里有两层含义:一是数据尽量少丢失,二是服务尽量少中断。AOF 和 RDB 保证了前者,而对于后者,Redis 的做法就是增…...

四季古诗赏析

春晓 春眠不觉晓,处处闻啼鸟。夜来风雨声,花落知多少。 夏意 别院深深夏簟清,石榴开遍透帘明。树阴满地日当午,梦觉流莺时一声。 秋词 自古逢秋悲寂寥,我言秋日胜春朝。晴空一鹤排云上,便引诗情到碧霄。 …...

【网络协议】聊聊套接字socket

网络编程我们知道是通过socket进行编程的,其实socket也是基于TCP和UDP协议进行编程的。但是在socket层面是感知不到下层的,所以在设置参数的时候,其实是端到端协议智商的网络层和传输层。TCP是数据流所以设置为SOCK_STREAM,而UDP是…...

GEO生信数据挖掘(十一)STRING数据库PPI蛋白互作网络 Cytoscape个性化绘图【SCI 指日可待】

GEO生信数据挖掘(十)肺结核数据-差异分析-WGCNA分析(900行代码整理注释更新版本) 通过 前面十篇文章的学习,我们应该已经可以获取到一个”心仪的基因列表“了,相较于原始基因数量,这个列表的数…...

api接口更新钉钉文档

class OperateKnowledgeBaseExcel():robot_code # agent_id #app_key #群机器人app_secret #群机器人def __init__(self,union_id, workbook_id, worksheet_id):self.union_id union_idself.workbook_id workbook_id # 获取方式:... &g…...

Android---如何同view进行渲染

ViewRootImpl 在 Activity、window 和 View 三者关系之间起着承上启下的作用。一方面,ViewRootImpl 中通过 Binder 通信机制,远程调用 WindowSession 将 View 添加到 Window 中;另一方面,ViewRootImpl 在添加 View 之前&#xff0…...

【LeetCode:26. 删除有序数组中的重复项 | 双指针】

🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...

如何判断一个对象是不是一个空对象?

在JavaScript中,可以使用以下方法来判断一个对象是否为空对象: 1:使用Object.keys()方法:Object.keys()方法返回一个包含对象自身可枚举属性的数组。通过判断该数组的长度,可以确定对象是否为空对象。 function isEm…...

C/C++ “variable set but not used“的 警告问题解决方案

在编程的过程中,会有一些预留的变量暂时不用,但是编译过程编译器警告 会报错无法编译通过针对这个问题,采用下面的解决方案比较方便。 错误如下形式: 三种解决方法: 1.可以在变量前加上(void)就…...

JAVA安全入门之反射

反射 对于反射这个概念来说,直白的讲就是: 对象可以通过反射获取他的类,类可以通过反射拿到所有⽅法(包括私有),拿到的⽅法可以调⽤而众所周知 JAVA 是一门静态语言,我们通过反射就可以达到动…...

【c++|opencv】一、基础操作---2.图像信息获取

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 图像信息获取&#xff0c;roi 1. 图像信息获取 // 获取图像信息#include <iostream> #include <opencv2/opencv.hpp>using namespace cv; …...

HarmonyOS开发:探索组件化模式开发

前言 组件化一直是移动端比较流行的开发方式&#xff0c;有着编译运行快&#xff0c;业务逻辑分明&#xff0c;任务划分清晰等优点&#xff0c;针对Android端的组件化&#xff0c;之前有比较系统的总结过相关文章&#xff0c;感兴趣的朋友&#xff0c;可以查看&#xff0c;点击…...

目标URL启用了不安全的HTTP方法

修复中危web项目漏洞&#xff08;目标URL启用了不安全的HTTP方法&#xff09; 漏洞名 &#xff1a;目标URL启用了不安全的HTTP方法 等级&#xff1a; 中危 漏洞位置&#xff1a; PUT DELETE 描述&#xff1a; Web服务器配置为允许使用危险的HTTP方法&#xff0c;如PUT、MOVE、…...

大数据之LibrA数据库系统告警处理(ALM-12001 审计日志转储失败)

告警解释 根据本地历史数据备份策略&#xff0c;集群的审计日志需要转储到第三方服务器上。如果转储服务器满足配置条件&#xff0c;审计日志可以成功转储。审计日志转储失败&#xff0c;系统产生此告警。如果第三方服务器的转储目录磁盘空间不足&#xff0c;或者用户修改了转…...

高光谱图像处理入门避坑指南:数据冗余、小样本和‘维数灾难’怎么破?

高光谱图像处理实战&#xff1a;破解数据冗余与小样本困境的技术路线 当第一次接触高光谱图像时&#xff0c;大多数研究者都会被其数据立方体的三维结构所震撼——数百个连续光谱波段构成的"超视觉"信息库&#xff0c;理论上能捕捉到人眼无法感知的物质指纹特征。但随…...

CuteTranslation:Linux系统上的专业级屏幕取词翻译解决方案

CuteTranslation&#xff1a;Linux系统上的专业级屏幕取词翻译解决方案 【免费下载链接】CuteTranslation Linux屏幕取词翻译软件 项目地址: https://gitcode.com/gh_mirrors/cu/CuteTranslation CuteTranslation是一款基于Qt框架和X11系统开发的Linux屏幕取词翻译软件&…...

UP Squared 6000工业级创客板:边缘AIoT开发与部署实战指南

1. 项目概述&#xff1a;UP Squared 6000&#xff0c;一块能“扛事”的工业级创客板在工业自动化和边缘AIoT项目里摸爬滚打这么多年&#xff0c;我经手过不少开发板&#xff0c;从早期的树莓派到各种国产派&#xff0c;再到工业级的工控机。很多时候&#xff0c;我们面临一个尴…...

工业作业火花识别 工业作业安全监测 工业安全火灾识别 火灾烟雾识别

火灾、烟雾及火花检测数据集 数据集概述 本数据集面向计算机视觉目标检测场景构建&#xff0c;聚焦火情风险要素识别&#xff0c;为烟火火花类智能监测模型训练提供标准化图像数据支撑&#xff0c;整体适配深度学习目标检测算法训练、验证与测试流程&#xff0c;可有效支撑安防…...

创业公司如何设计有效的OKR

创业公司如何设计有效的OKR 前言 创业第一年&#xff0c;我们没有明确的目标&#xff0c;大家都很忙&#xff0c;但不知道忙什么。每个人都在做事&#xff0c;但好像没有形成合力。 后来我开始研究 OKR&#xff08;Objectives and Key Results&#xff09;&#xff0c;发现这不…...

NoFences:如何用免费开源方案革命性管理你的Windows桌面分区

NoFences&#xff1a;如何用免费开源方案革命性管理你的Windows桌面分区 【免费下载链接】NoFences &#x1f6a7; Open Source Stardock Fences alternative 项目地址: https://gitcode.com/gh_mirrors/no/NoFences 你是否厌倦了在杂乱无章的Windows桌面上寻找文件&…...

鼎讯 SZT-1000A:交通网络多合一智能测试仪

铁路、高速公路通信网络业务密集、链路复杂&#xff0c;集传输、监控、收费于一体&#xff0c;对测试设备的集成度、便携性、精准度要求极高。鼎讯 SZT-1000A 以太网测试仪&#xff0c;以 “一机多能、超轻便携” 的优势&#xff0c;成为交通领域网络安装、调试、运维的核心利器…...

AIGC 检测怎么识别 ChatGPT 写作指纹?嘎嘎降 AI 帮你 AI 率从 85% 降到 5%

AIGC 检测怎么识别 ChatGPT 写作指纹&#xff1f;嘎嘎降 AI 帮你 AI 率从 85% 降到 5% 很多同学好奇——为什么 ChatGPT 改写论文之后送知网检测 AI 率反而涨了&#xff1f;真相是——ChatGPT 的输出有自己独特的"写作指纹"——AIGC 检测算法早就识别了这种指纹。这篇…...

5大技术模块深度解析:基于Simscape Electrical的无刷直流电机控制仿真

5大技术模块深度解析&#xff1a;基于Simscape Electrical的无刷直流电机控制仿真 【免费下载链接】Design-motor-controllers-with-Simscape-Electrical This repository contains MATLAB and Simulink files used in the "How to design motor controllers using Simsca…...

如何快速上手SillyTavern:新手完整入门指南

如何快速上手SillyTavern&#xff1a;新手完整入门指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern 还在为复杂的LLM前端配置而烦恼吗&#xff1f;SillyTavern作为一款专为高级用户设计…...