unity3d如何更改实例化预制件的颜色

2024-01-03

在统一中,我有一个预制件,我想实例化它并将实例化预制件的颜色更改为黑色。预制件的默认颜色为黄色。我的目标是将颜色更改为随机颜色,但现在它只是黑色。
稍后我会制作随机颜色。但有一个问题:颜色没有改变。我检查了互联网上的一些解决方案,但没有一个适合我。
这是我的代码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class starsGenerator : MonoBehaviour {

public float square_size;
public int stars_in_square;
public int galaxy_size;
public Transform star;


void generateGalaxy() {
    float rootSquareX = -(square_size/2.0f);
    float rootSquareY = (square_size/2.0f);



    for(int i = 0; i < galaxy_size; i++)
    {
        for (int j = 0; j < galaxy_size; j++)
        {
            Color color = Color.black;

            float sqx = rootSquareX + (i * square_size);
            float sqy = rootSquareY + (j * square_size);

            for(int k = 1; k <= stars_in_square; k++)
            {
                float strx = Random.Range(sqx + 0.2f, sqx + square_size - 0.2f);
                float stry = Random.Range(sqy + 0.2f, sqy + square_size - 0.2f);

                Color newColor = new Color(Random.value, Random.value, Random.value, 1.0f);


                Transform instd = Instantiate(star, new Vector3(strx, stry, 4.44f), Quaternion.identity);

                instd.GetComponent<MeshRenderer>().material.SetColor("_Color", Color.red);
                // also instd.GetComponent<MeshRenderer>().material.color = color; doesn't work
            }
        }
    }
}

// Use this for initialization
void Start () {
    generateGalaxy();

}

// Update is called once per frame
void Update () {

}

}

And my prefab:
this is my prefab

EDIT:
请注意,我的预制件不使用默认着色器。这是一个问题吗?

这是预制件的着色器:

Shader "Custom/GlowShader" 
{
 Properties 
 {
  _ColorTint("Color Tint", Color) = (1, 1, 1, 1)
  _MainTex("Base (RGB)", 2D) = "white" {}
  _BumpMap("Normal Map", 2D) = "bump" {}
  _RimColor("Rim Color", Color) = (1, 1, 1, 1)
  _RimPower("Rim Power", Range(1.0, 6.0)) = 3.0

 }
 SubShader {

  Tags { "RenderType"="Opaque" }

  CGPROGRAM
  #pragma surface surf Lambert

  struct Input {

   float4 color : Color;
   float2 uv_MainTex;
   float2 uv_BumpMap;
   float3 viewDir;

  };

  float4 _ColorTint;
  sampler2D _MainTex;
  sampler2D _BumpMap;
  float4 _RimColor;
  float _RimPower;

  void surf (Input IN, inout SurfaceOutput o) 
  {


   IN.color = _ColorTint;
   o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb * IN.color;
   o.Normal = UnpackNormal(tex2D(_BumpMap,IN.uv_BumpMap));

   half rim = 1.0 - saturate(dot(normalize(IN.viewDir), o.Normal));
   o.Emission = _RimColor.rgb * pow(rim, _RimPower);


  }
  ENDCG
 } 
 FallBack "Diffuse"
}

通过渲染器设置颜色

    GameObject go = Instantiate(_ShieldPrefab);
    Renderer rend = go.GetComponent<Renderer>();
    rend.material.color = Color.black;

或者更换材料。

    GameObject go = Instantiate(thePrefabYouInstantiate);
    Renderer rend = go.GetComponent<Renderer>();
    rend.material = yourNewMaterial;

我的意思是。制作 2 种材料,一种是黄色,一种是黑色。然后使用我提供的第二个替代解决方案作为代码在运行时更改材质。只是代替我写的“yourNewMaterial”,它应该是黑色材料的材料变量的名称。

不使用默认着色器应该不是问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

unity3d如何更改实例化预制件的颜色 的相关文章

随机推荐

  • 上传到 Firebase 托管无法正常工作

    我刚刚使用 AngularJS 和 Firebase 作为实时数据库构建了我的第一个 Web 应用程序 当我在本地主机上运行它时 我想要它做的一切对我来说都很有效 但是 当我将其加载到 Firebase Hosting 并打开它时 文件尚未
  • 当数组中的 json 对象数量未知时,如何从 mysql 文本列中提取 json 数组作为表?

    有没有办法从包含具有不同数量的 json 对象的 json 数组的文本列中提取数据到表中 例如 如果我 CREATE TABLE tableWithJsonStr location TEXT jsonStr TEXT INSERT INTO
  • 尝试将实体映射到 DTO 对象时 ModelMapper 返回 NULL

    这是我尝试映射的对象的类 package com agent module entities import java util Set import javax persistence Entity import javax persist
  • 在 C# 应用程序中嵌入 Excel 的最佳方法是什么 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想将 MS Excel 嵌入到我的 wpf C 应用程序中的选项卡式视图中 以便用户可以利用真正的 MS Excel 不是克隆 轻松
  • 创建多页 PDF

    我需要实现创建包含多页文本的 pdf 的功能 class PDFCreator func prepareData gt Data 1 let pdfMetaData kCGPDFContextCreator PDF Creator kCGP
  • python 脚本完成后保持 Selenium 浏览器打开

    我正在开发一个硒项目 但每次脚本结束时 窗口都会自动关闭 不过 在脚本关闭后 我想保持窗口打开 我用谷歌搜索了这个 stackoverflow 说使用以下代码来保持它打开 chrome options webdriver ChromeOpt
  • Groovy 从 URL 下载图像

    我想知道从该 RUL 下载图像的正确方法是什么 http www hidemyass com proxy list img port 7018246 1 http www hidemyass com proxy list img port
  • 浏览速度取决于浏览器吗?

    浏览速度取决于浏览器 如IE firefox 吗 如果取决于浏览器 哪种浏览器最好并且运行速度最快 如果我们清除浏览器的缓存 会不会降低浏览速度 thanks 是的 这取决于浏览器 不仅是哪个浏览器 还有它的配置 有很多东西在不同的浏览器中
  • error_log 与包含的文件位于同一目录中吗?

    我研究了不同的方法和指令 包括 自动前置文件 user ini 文件 getcwd 调试回溯 我似乎找不到一种方法来更改 error log 的路径以登录与包含 需要的文件相同的路径 例如 假设 index php 有以下行 include
  • 使用 Alembic 时导入应用程序会引发 ImportError

    我正在尝试研究如何在 Flask 中使用 alembic 我想在 Flask 应用程序中导入一个方法 tree README md alembic README env py env pyc script py mako versions
  • 删除 uiwindow 的子视图?

    我想从 uiwindow 中删除一个视图 所以我在 appdelegate 方法中 nslog 它说窗口的子视图计为两个NSLog d self window subviews count 那么我如何从窗口中删除该子视图 如果我删除该子视图
  • Anaconda 安装卡在解压:anaconda-2020.02-py37_0.tar.bz2?

    我是Python新手 我正在我的 Windows 7 笔记本电脑上安装 Anaconda 3 2020 02 64 位 它卡在文件名 anaconda 2020 02 py37 tar bz2 处 我尝试了多次 但每次都会发生 我刚刚做完
  • 是否有稳定且生产质量的 nosql 数据存储?

    是否有可以在生产系统上使用的生产质量 nosql 存储 我看过 cassandra tokyodb couchdb 等 但它们似乎都没有准备好在生产环境中进行部署 我说的是每分钟数千个请求和大量的读 写 更新 我唯一关心的是速度和服务时间
  • 您测试 iPhone / iPad 应用程序的方法是什么?

    在为 iPhone iPad 开发时 您会 进行单元 集成 等测试 您使用什么框架 您还尝试过哪些其他框架 如果您决定不使用它们 为什么不呢 NOTE这是基于一个几天前提出的问题 https stackoverflow com questi
  • 如何将 SQLite 文件中的更改迁移到现有应用程序中?

    我已经提交了一个 iOS 应用程序SQLite数据库文件用于在应用程序内存储数据 现在 在应用程序的下一个版本中 我对数据库文件进行了一些修改 Like 添加了新表 1 个空表 2 个包含固定数据 在表中添加了新列 从表中删除现有列 什么
  • 是否可以在 webview 中打开 sdcard/cache 中存储的 pdf 文件?

    我正在我的应用程序中下载 PDF 文件并希望允许用户查看它 是否有可能使用 webview 我可以显示下载到 SD 卡或本地内存的 pdf 文件 据我所知 有一种解决方法 我可以将 pdf 文件的链接提供到 google url 这将在 w
  • 扭曲意外连接丢失

    我使用 Python Twisted 编写了一个 TCP 服务器 用于从客户端发送 接收二进制数据 当客户关闭其应用程序或调用abortConnection方法 我得到connectionLost事件正常 但当客户端意外断开连接时 我没有收
  • Node.js 模块是否需要包装在模块模式中?

    为了确保适当的隔离 我倾向于将我编写的每个 node js 模块包装在函数范围内 function var express require express var jade require jade var moment require m
  • Spring MVC:无法反序列化 START_ARRAY 令牌之外的实例

    我已经为此绞尽脑汁有一段时间了 但仍然没有快乐 我是 Spring 新手 确实需要一些帮助 我正在尝试使用 Spring Boot 从数据库表返回代码列表 当我从浏览器中的 URL 调用 REST 控制器时 示例网址 本地主机 8081 c
  • unity3d如何更改实例化预制件的颜色

    在统一中 我有一个预制件 我想实例化它并将实例化预制件的颜色更改为黑色 预制件的默认颜色为黄色 我的目标是将颜色更改为随机颜色 但现在它只是黑色 稍后我会制作随机颜色 但有一个问题 颜色没有改变 我检查了互联网上的一些解决方案 但没有一个适