Unity Shader编辑器工具类ShaderUtil 常用函数和用法
Unity Shader编辑器工具类ShaderUtil 常用函数和用法
Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。
编译和导入函数
CompileShader
函数签名:public static bool CompileShader(string source, out string error);
CompileShader函数用于编译一个着色器。它接受一个字符串参数source,表示要编译的着色器代码,返回一个布尔值,表示编译是否成功。如果编译失败,可以通过out参数error获取错误信息。
以下是一个使用CompileShader函数的示例:
string shaderCode = @"Shader ""CustomShader"" {// 着色器代码}
";string error;
bool success = ShaderUtil.CompileShader(shaderCode, out error);if (success)
{Debug.Log("Shader compiled successfully!");
}
else
{Debug.LogError("Shader compilation failed: " + error);
}
OpenCompiledShader
函数签名:public static void OpenCompiledShader(string pathName, int line);
OpenCompiledShader函数用于在外部程序中打开已编译的着色器文件。它接受两个参数,pathName表示要打开的着色器文件的路径,line表示要跳转到的行数。
以下是一个使用OpenCompiledShader函数的示例:
string shaderPath = "Assets/Shaders/CustomShader.shader";
int line = 10;ShaderUtil.OpenCompiledShader(shaderPath, line);
属性和关键字函数
GetPropertyCount
函数签名:public static int GetPropertyCount(Shader shader);
这个函数用于获取指定着色器中属性的数量。它接受一个Shader对象作为参数,并返回该着色器中属性的数量。属性是在Shader编辑器中定义的变量,用于控制材质的外观和行为。
以下是一个示例代码,演示了如何使用GetPropertyCount函数获取着色器中属性的数量:
Shader shader = Shader.Find("MyShader");
int propertyCount = ShaderUtil.GetPropertyCount(shader);
Debug.Log("Property count: " + propertyCount);
GetPropertyName
函数签名:public static string GetPropertyName(Shader shader, int propertyIndex);
这个函数用于获取指定着色器中属性的名称。它接受一个Shader对象和属性的索引作为参数,并返回该属性的名称。
以下是一个示例代码,演示了如何使用GetPropertyName函数获取着色器中属性的名称:
Shader shader = Shader.Find("MyShader");
int propertyIndex = 0;
string propertyName = ShaderUtil.GetPropertyName(shader, propertyIndex);
Debug.Log("Property name: " + propertyName);
GetShaderKeywords
函数签名:public static string[] GetShaderKeywords(Shader shader);
这个函数用于获取指定着色器的关键字。关键字是在Shader编辑器中定义的标识符,用于控制着色器的不同功能和效果。
以下是一个示例代码,演示了如何使用GetShaderKeywords函数获取着色器的关键字:
Shader shader = Shader.Find("MyShader");
string[] keywords = ShaderUtil.GetShaderKeywords(shader);
Debug.Log("Shader keywords: " + string.Join(", ", keywords));
SetShaderKeywords
函数签名: public static void SetShaderKeywords(Shader shader, string[] keywords);
这个函数用于设置指定着色器的关键字。它接受一个Shader对象和一个关键字数组作为参数,并将这些关键字应用到着色器上。
以下是一个示例代码,演示了如何使用SetShaderKeywords函数设置着色器的关键字:
Shader shader = Shader.Find("MyShader");
string[] keywords = new string[] { "KEYWORD1", "KEYWORD2" };
ShaderUtil.SetShaderKeywords(shader, keywords);
渲染纹理函数
1. GetRenderTextureFormat
public static RenderTextureFormat GetRenderTextureFormat(string name);
该函数用于获取指定名称的渲染纹理格式。它接受一个字符串参数name,表示渲染纹理的名称,返回一个RenderTextureFormat枚举值,表示对应的渲染纹理格式。
2. GetRenderTargetCount
public static int GetRenderTargetCount();
该函数用于获取当前渲染目标的数量。它返回一个整数值,表示当前渲染目标的数量。
3. GetRenderTargetName
public static string GetRenderTargetName(int index);
该函数用于获取指定索引的渲染目标的名称。它接受一个整数参数index,表示渲染目标的索引,返回一个字符串值,表示对应渲染目标的名称。
4. GetRenderTargetPropertyCount
public static int GetRenderTargetPropertyCount(int index);
该函数用于获取指定渲染目标的属性数量。它接受一个整数参数index,表示渲染目标的索引,返回一个整数值,表示对应渲染目标的属性数量。
5. GetRenderTargetPropertyName
public static string GetRenderTargetPropertyName(int index, int propIndex);
该函数用于获取指定渲染目标的属性名称。它接受两个整数参数index和propIndex,分别表示渲染目标的索引和属性的索引,返回一个字符串值,表示对应属性的名称。
6. GetRenderTargetPropertyType
public static ShaderUtil.ShaderPropertyType GetRenderTargetPropertyType(int index, int propIndex);
该函数用于获取指定渲染目标的属性类型。它接受两个整数参数index和propIndex,分别表示渲染目标的索引和属性的索引,返回一个ShaderUtil.ShaderPropertyType枚举值,表示对应属性的类型。
7. GetRenderTargetPropertyValue
public static float GetRenderTargetPropertyValue(int index, int propIndex);
该函数用于获取指定渲染目标的属性值。它接受两个整数参数index和propIndex,分别表示渲染目标的索引和属性的索引,返回一个浮点数值,表示对应属性的值。
8. SetRenderTargetPropertyCount
public static void SetRenderTargetPropertyCount(int index, int count);
该函数用于设置指定渲染目标的属性数量。它接受两个整数参数index和count,分别表示渲染目标的索引和属性的数量。
9. SetRenderTargetPropertyName
public static void SetRenderTargetPropertyName(int index, int propIndex, string name);
该函数用于设置指定渲染目标的属性名称。它接受三个参数index、propIndex和name,分别表示渲染目标的索引、属性的索引和属性的名称。
10. SetRenderTargetPropertyType
public static void SetRenderTargetPropertyType(int index, int propIndex, ShaderUtil.ShaderPropertyType type);
该函数用于设置指定渲染目标的属性类型。它接受三个参数index、propIndex和type,分别表示渲染目标的索引、属性的索引和属性的类型。
11. SetRenderTargetPropertyValue
public static void SetRenderTargetPropertyValue(int index, int propIndex, float value);
该函数用于设置指定渲染目标的属性值。它接受三个参数index、propIndex和value,分别表示渲染目标的索引、属性的索引和属性的值。
示例代码
using UnityEngine;public class ShaderUtilExample : MonoBehaviour
{void Start(){// 获取渲染纹理格式RenderTextureFormat format = ShaderUtil.GetRenderTextureFormat("MyRenderTexture");Debug.Log("RenderTexture format: " + format);// 获取渲染目标数量int targetCount = ShaderUtil.GetRenderTargetCount();Debug.Log("Render target count: " + targetCount);// 获取渲染目标名称string targetName = ShaderUtil.GetRenderTargetName(0);Debug.Log("Render target name: " + targetName);// 获取渲染目标属性数量int propertyCount = ShaderUtil.GetRenderTargetPropertyCount(0);Debug.Log("Render target property count: " + propertyCount);// 获取渲染目标属性名称string propertyName = ShaderUtil.GetRenderTargetPropertyName(0, 0);Debug.Log("Render target property name: " + propertyName);// 获取渲染目标属性类型ShaderUtil.ShaderPropertyType propertyType = ShaderUtil.GetRenderTargetPropertyType(0, 0);Debug.Log("Render target property type: " + propertyType);// 获取渲染目标属性值float propertyValue = ShaderUtil.GetRenderTargetPropertyValue(0, 0);Debug.Log("Render target property value: " + propertyValue);// 设置渲染目标属性数量ShaderUtil.SetRenderTargetPropertyCount(0, 2);// 设置渲染目标属性名称ShaderUtil.SetRenderTargetPropertyName(0, 0, "Property1");ShaderUtil.SetRenderTargetPropertyName(0, 1, "Property2");// 设置渲染目标属性类型ShaderUtil.SetRenderTargetPropertyType(0, 0, ShaderUtil.ShaderPropertyType.Float);ShaderUtil.SetRenderTargetPropertyType(0, 1, ShaderUtil.ShaderPropertyType.Color);// 设置渲染目标属性值ShaderUtil.SetRenderTargetPropertyValue(0, 0, 1.0f);ShaderUtil.SetRenderTargetPropertyValue(0, 1, Color.red);}
}
其他函数
GetMaterial
public static Material GetMaterial(Renderer renderer, int materialIndex);
该函数用于获取指定渲染器(Renderer)上指定索引(materialIndex)的材质(Material)实例。在Unity中,渲染器可以包含多个材质,每个材质对应一个子网格(SubMesh)。以下是一个使用示例:
Renderer renderer = GetComponent<Renderer>();
Material material = ShaderUtil.GetMaterial(renderer, 0);
GetMaterialProperty
public static float GetMaterialProperty(Material material, int propertyIndex);
public static Vector4 GetMaterialProperty(Material material, int propertyIndex, bool isBatchable);
这个函数用于获取材质(Material)上指定索引(propertyIndex)的属性(Property)的值。属性可以是浮点数、向量等类型。以下是一个使用示例:
Material material = GetComponent<Renderer>().material;
float floatValue = ShaderUtil.GetMaterialProperty(material, 0);
Vector4 vectorValue = ShaderUtil.GetMaterialProperty(material, 1);
GetMaterialPropertyIndex
public static int GetMaterialPropertyIndex(Material material, string propertyName);
该函数用于获取材质(Material)上指定属性(propertyName)的索引(propertyIndex)。以下是一个使用示例:
Material material = GetComponent<Renderer>().material;
int propertyIndex = ShaderUtil.GetMaterialPropertyIndex(material, "_Color");
GetMaterialPropertyType
public static ShaderUtil.ShaderPropertyType GetMaterialPropertyType(Material material, int propertyIndex);
这个函数用于获取材质(Material)上指定索引(propertyIndex)的属性(Property)的类型(ShaderPropertyType)。以下是一个使用示例:
Material material = GetComponent<Renderer>().material;
ShaderUtil.ShaderPropertyType propertyType = ShaderUtil.GetMaterialPropertyType(material, 0);
GetMaterialPropertyDefaultValue
public static float GetMaterialPropertyDefaultValue(Material material, int propertyIndex);
public static Vector4 GetMaterialPropertyDefaultValue(Material material, int propertyIndex, bool isBatchable);
该函数用于获取材质(Material)上指定索引(propertyIndex)的属性(Property)的默认值。以下是一个使用示例:
Material material = GetComponent<Renderer>().material;
float defaultValue = ShaderUtil.GetMaterialPropertyDefaultValue(material, 0);
Vector4 defaultVector = ShaderUtil.GetMaterialPropertyDefaultValue(material, 1);
GetMaterialPropertyTextureDimension
public static TextureDimension GetMaterialPropertyTextureDimension(Material material, int propertyIndex);
这个函数用于获取材质(Material)上指定索引(propertyIndex)的纹理属性(Texture Property)的维度(TextureDimension)。以下是一个使用示例:
Material material = GetComponent<Renderer>().material;
TextureDimension dimension = ShaderUtil.GetMaterialPropertyTextureDimension(material, 0);
GetMaterialPropertyTextureDefaultName
public static string GetMaterialPropertyTextureDefaultName(Material material, int propertyIndex);
该函数用于获取材质(Material)上指定索引(propertyIndex)的纹理属性(Texture Property)的默认名称。以下是一个使用示例:
Material material = GetComponent<Renderer>().material;
string defaultName = ShaderUtil.GetMaterialPropertyTextureDefaultName(material, 0);
GetGlobalFloat
public static float GetGlobalFloat(string name);
这个函数用于获取全局浮点数属性(Global Float Property)的值。以下是一个使用示例:
float globalFloat = ShaderUtil.GetGlobalFloat("_MyGlobalFloat");
GetGlobalInt
public static int GetGlobalInt(string name);
该函数用于获取全局整数属性(Global Int Property)的值。以下是一个使用示例:
int globalInt = ShaderUtil.GetGlobalInt("_MyGlobalInt");
GetGlobalVector
public static Vector4 GetGlobalVector(string name);
这个函数用于获取全局向量属性(Global Vector Property)的值。以下是一个使用示例:
Vector4 globalVector = ShaderUtil.GetGlobalVector("_MyGlobalVector");
GetGlobalMatrix
public static Matrix4x4 GetGlobalMatrix(string name);
该函数用于获取全局矩阵属性(Global Matrix Property)的值。以下是一个使用示例:
Matrix4x4 globalMatrix = ShaderUtil.GetGlobalMatrix("_MyGlobalMatrix");
GetGlobalTexture
public static Texture GetGlobalTexture(string name);
这个函数用于获取全局纹理属性(Global Texture Property)的值。以下是一个使用示例:
Texture globalTexture = ShaderUtil.GetGlobalTexture("_MyGlobalTexture");
SetGlobalFloat
public static void SetGlobalFloat(string name, float value);
该函数用于设置全局浮点数属性(Global Float Property)的值。以下是一个使用示例:
ShaderUtil.SetGlobalFloat("_MyGlobalFloat", 1.5f);
这将把名为"_MyGlobalFloat"的全局浮点数属性设置为1.5。
SetGlobalInt
public static void SetGlobalInt(string name, int value);
这个函数用于设置全局整数属性(Global Int Property)的值。以下是一个使用示例:
ShaderUtil.SetGlobalInt("_MyGlobalInt", 10);
这将把名为"_MyGlobalInt"的全局整数属性设置为10。
SetGlobalVector
public static void SetGlobalVector(string name, Vector4 value);
该函数用于设置全局向量属性(Global Vector Property)的值。以下是一个使用示例:
ShaderUtil.SetGlobalVector("_MyGlobalVector", new Vector4(1, 2, 3, 4));
这将把名为"_MyGlobalVector"的全局向量属性设置为(1, 2, 3, 4)。
SetGlobalMatrix
public static void SetGlobalMatrix(string name, Matrix4x4 value);
这个函数用于设置全局矩阵属性(Global Matrix Property)的值。以下是一个使用示例:
Matrix4x4 matrix = Matrix4x4.identity;
ShaderUtil.SetGlobalMatrix("_MyGlobalMatrix", matrix);
这将把名为"_MyGlobalMatrix"的全局矩阵属性设置为单位矩阵。
SetGlobalTexture
public static void SetGlobalTexture(string name, Texture value);
该函数用于设置全局纹理属性(Global Texture Property)的值。以下是一个使用示例:
Texture texture = Resources.Load<Texture>("MyTexture");
ShaderUtil.SetGlobalTexture("_MyGlobalTexture", texture);
这将把名为"_MyGlobalTexture"的全局纹理属性设置为名为"MyTexture"的资源纹理。
我对技术文章中可能存在的错误向您表示诚挚的歉意。我努力确保提供准确可靠的信息,但由于技术领域的不断变化,错误难以避免。如果您发现了错误或有任何疑问,请与我联系。我将竭尽全力纠正错误并提供更准确的信息。
再次向您表示最诚挚的歉意,我将更加谨慎地审查和更新文章,以提供更好的阅读体验和准确的技术信息。
谢谢您的理解和支持。
相关文章:

Unity Shader编辑器工具类ShaderUtil 常用函数和用法
Unity Shader编辑器工具类ShaderUtil 常用函数和用法 Unity的Shader编辑器工具类ShaderUtil提供了一系列函数,用于编译、导入和管理着色器。本文将介绍ShaderUtil类中的常用函数和用法。 编译和导入函数 CompileShader 函数签名:public static bool C…...

详解Spring中涉及的技术
注解 介绍: 注解(Annotation)很重要,未来的开发模式都是基于注解的,JPA是基于注解的,Spring2.5以上都是基于注解的,Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注…...

阿里云ssl免费数字证书快过期 如何更换
1.登陆阿里云 找到ssl 查看快过期的证书 数字证书管理服务-ssl证书 2.创建免费的证书,对应过期证书的域名 3.下载新证书 pem key放在本地 此处记录本地的下载路径 /Users/dorsey/Downloads/10791167_lzzabc.cn_nginx/lzzabc.cn.pem /Users/dorsey/Downloads/1…...

利用OpenCV实现图像拼接
一、介绍 图像拼接. 二、分步实现 要实现图像拼接,简单来说有以下几步: 对每幅图进行特征点提取对对特征点进行匹配进行图像配准把图像拷贝到另一幅图像的特定位置对重叠边界进行特殊处理 PS:需要使用低版本的opencv,否则无法使…...

【java安全】无Commons-Collections的Shiro550反序列化利用
文章目录 【java安全】无Commons-Collections的Shiro550反序列化利用Shiro550利用的难点CommonsBeanutils1是否可以Shiro中?什么是serialVersionUID?W 无依赖的Shiro反序列化利用链POC 【java安全】无Commons-Collections的Shiro550反序列化利用 Shiro5…...

CSS 滚动条
一、滚动条样式属性 ::-webkit-scrollbar {width: 6px; /* 竖向滚动条宽度 */height: 6px; /* 横向滚动条高度 */ }::-webkit-scrollbar-thumb {border-radius: 10px; /* 滚动条样式 */-webkit-box-shadow: inset 0 0 3px red; /* 内阴影 */background-color: blue; /* 滚动条…...
Linux: security: openssh: sshd 出现defunct的一种情况
最近遇到了一个问题,就出现了一对遗留进程对,类似于下面这两个 root 77399 19100 77399 0 1 01:46 ? 00:00:00 sshd: \mzhan017 [priv] sshd 77400 77399 77400 0 1 01:46 ? 00:00:00 sshd: [defunct] 人生中的第一次遇到这种情况。一定要记录一下! 关于[priv]这个解释,…...
Self-regulating Prompts: Foundational Model Adaptation without Forgetting
本文也是大模型系列的文章,主要是与Prompt Learning有关。针对《Self-regulating Prompts: Foundational Model Adaptation without Forgetting》的翻译。 自我调节的提示:不遗忘的基础模型适应 摘要1 引言2 相关工作3 提出的方法3.1 前言3.2 提示学习的…...

平时工资不够用?推荐4种适合工作之余做的兼职副业!
你是否也曾经在为每个月的工资发愁?你是否想过做点副业来增加收入?现在很多上班族的工资,已经难以满足他们的生活需求了,很多人开始尝试通过副业来增加收入。那么上班族要如何寻找适合自己的副业呢?下面就给大家分享几…...

21.Netty源码之编码器
highlight: arduino-light Netty如何实现自定义通信协议 在学习完如何设计协议之后,我们又该如何在 Netty 中实现自定义的通信协议呢?其实 Netty 作为一个非常优秀的网络通信框架,已经为我们提供了非常丰富的编解码抽象基类,帮助我…...

Linux 快速创建桌面图标
在安装 tar.gz 这类型压缩文件时,通常启动文件是.sh文件。文章主要记录快速添加到桌面图标。 1、解压 tar -zxvf XXX.tar.gz 2、创建桌面图标文件 touch XXX.desktop 3、文件中配置 [Desktop Entry] NameXXX CommentZZZ Exec/软件可执行文件所在目录/可执行文…...

数据结构—哈夫曼树及其应用
5.6哈夫曼树及其应用 5.6.1哈夫曼树的基本概念 路径:从树中一个结点到另一个结点之间的分支构成这两个结点间的路径。 结点的路径长度:两结点间路径上的分支数。 树的路径长度:从树根到每一个结点的路径长度之和。记作 TL 结点数目相同的…...

NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 论文阅读
论文信息 题目:NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields 作者:Antoni Rosinol, John J. Leonard, Luca Carlone 代码:https://github.com/ToniRV/NeRF-SLAM 来源:arxiv 时间ÿ…...
机器学习之弹性网络(Elastic Net)
弹性网络 代码原文 下面代码参考scikit-learn中文社区,链接在上面。 但是由于scikit-learn中文社区上的代码有些地方跑不通,故对此代码做了修改,输出结果与社区中显示的结果相同。 对弹性网络进行简单的介绍: ElasticNet是一个训…...

嵌入式入门教学——C51
一、前期准备 1、硬件设备 2、软件设备 二、预备知识 1、什么是单片机? 在一片集成电路芯片上集成微处理器、存储器、IO接口电路,从而构成了单芯片微型计算机,及单片机。STC89C52单片机: STC:公司89:所属…...
2023-08-03力扣每日一题
链接: 722. 删除注释 题意: 如题,特殊规则见链接 解: 字符串处理,嗯写就完事了,主要是判断指针位置和特殊规则 实际代码: #include<bits/stdc.h> using namespace std; vector<string> …...

【蓝桥杯备考资料】如何进入国赛?
目录 写在前面注意事项数组、字符串处理BigInteger日期问题DFS 2013年真题Java B组世纪末的星期马虎的算式振兴中华黄金连分数有理数类(填空题)三部排序(填空题)错误票据幸运数字带分数连号区间数 2014年真题蓝桥杯Java B组03猜字…...

QtWebApp开发https服务器,完成客户端与服务器基于ssl的双向认证
引言:所谓http协议,本质上也是基于TCP/IP上服务器与客户端请求和应答的标准,web开发中常用的http server有apache和nginx。Qt程序作为http client可以使用QNetworkAccessManager很方便的进行http相关的操作。Qt本身并没有http server相关的库…...
动态IP代理的优势展现与应用场景
在当今数字化时代,网络安全和隐私保护变得愈发重要。作为一家动态IP代理产品供应商,我们深知在保护个人隐私和提高网络安全性方面的重要性。本文将会分享动态IP代理的优势及其在不同应用场景下的实际应用案例,帮助更好地了解和应用动态IP代理…...

ad+硬件每日学习十个知识点(22)23.8.2(LDO datasheet手册解读)
文章目录 1.LDO的概述、features2.LDO的绝对参数(功率升温和结温)3.LDO的引脚功能4.LDO的电气特性5.LDO的典型电路(电容不能真用1uF,虽然按比例取输出值,但是R2的取值要考虑释放电流)6.LDO的开关速度和线性…...

网络六边形受到攻击
大家读完觉得有帮助记得关注和点赞!!! 抽象 现代智能交通系统 (ITS) 的一个关键要求是能够以安全、可靠和匿名的方式从互联车辆和移动设备收集地理参考数据。Nexagon 协议建立在 IETF 定位器/ID 分离协议 (…...
Cursor实现用excel数据填充word模版的方法
cursor主页:https://www.cursor.com/ 任务目标:把excel格式的数据里的单元格,按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例,…...

以下是对华为 HarmonyOS NETX 5属性动画(ArkTS)文档的结构化整理,通过层级标题、表格和代码块提升可读性:
一、属性动画概述NETX 作用:实现组件通用属性的渐变过渡效果,提升用户体验。支持属性:width、height、backgroundColor、opacity、scale、rotate、translate等。注意事项: 布局类属性(如宽高)变化时&#…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

【Oracle】分区表
个人主页:Guiat 归属专栏:Oracle 文章目录 1. 分区表基础概述1.1 分区表的概念与优势1.2 分区类型概览1.3 分区表的工作原理 2. 范围分区 (RANGE Partitioning)2.1 基础范围分区2.1.1 按日期范围分区2.1.2 按数值范围分区 2.2 间隔分区 (INTERVAL Partit…...

RNN避坑指南:从数学推导到LSTM/GRU工业级部署实战流程
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文全面剖析RNN核心原理,深入讲解梯度消失/爆炸问题,并通过LSTM/GRU结构实现解决方案,提供时间序列预测和文本生成…...
AspectJ 在 Android 中的完整使用指南
一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...