関数定義に整数引数を追加し、その関数が呼び出される唯一のインスタンスに整数を追加しました。エラーが生成されます。コンパイラがUnity3dで正しいコードをコンパイルすることを拒否していますC#
CustomShaderEditor.cs(44,46):エラーCS1501:私はこの種類のエラーに対処する方法がわからない
方法UpdateTexture' takes
0' を引数なしの過負荷、私はいくつかのアドバイスが大好きです。
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.IO;
using System;
public class CustomShader : MonoBehaviour
{
public int numTiles = 10;
public GameObject RenderGameObject;
public GameObject[] gamObjectClones;
public Texture2D ComputeTexture;
public ComputeShader ComputeShader;
ComputeBuffer wavBuffer ;
ComputeBuffer computeBuffer ;
void Start()
{
ResetTexture();
gamObjectClones = new GameObject[numTiles];
for (int i=0; i<numTiles; i++)
{
gamObjectClones[i] = (GameObject)Instantiate(RenderGameObject, new Vector3(i * 10.0f, 0, 0), Quaternion.identity);
}
}
void Update()
{
RefreshComputeShaderMaterial();
}
public void RefreshComputeShaderMaterial()
{
for (int i=0; i<numTiles; i++)
{
UpdateTexture( 10);
Material m = gamObjectClones[i].GetComponent<Renderer>().sharedMaterial;
if (m.HasProperty("_DataTexture"))
{
m.SetTexture("_DataTexture", ComputeTexture);
}
}
}
public void ResetTexture()
{
int BufferSize = ComputeTexture.width * ComputeTexture.height;
Color[] ColorBuffer = new Color[BufferSize];
ComputeTexture.SetPixels(ColorBuffer);
ComputeTexture.Apply();
}
public void SetupTexture()
{
int BufferSize = ComputeTexture.width * ComputeTexture.height;
Color[] ColorBuffer = ComputeTexture.GetPixels();
for (int i=0; i<BufferSize; i++)
{
if ((i&31)==31)
{
ColorBuffer[i] = Color.white;
}
}
ComputeTexture.SetPixels(ColorBuffer);
ComputeTexture.Apply();
}
public void UpdateTexture(int tile)
{
int csi;
csi = ComputeShader.FindKernel("computeGameOfLife");
if (csi>-1)
{
var ran = UnityEngine.Random.Range(1f,100f);
int BufferSize = ComputeTexture.width * ComputeTexture.height;
Vector4[] TextureBuffer = new Vector4[BufferSize];
Color [] ColorBuffer = ComputeTexture.GetPixels();
for (int i=0; i<BufferSize; i++)
{
TextureBuffer[i].x = 0;//Mathf.Sin(i/10f);
TextureBuffer[i].y = 0;
TextureBuffer[i].z = 0;
TextureBuffer[i].w = 0;
}
computeBuffer = new ComputeBuffer(BufferSize, sizeof(float) * 4);
computeBuffer.SetData(TextureBuffer);
ComputeShader.SetBuffer(csi, "DataTexture", computeBuffer);
//////////////////// patch
int sBufferSize = 88000 ;
float[] sTextureBuffer = new float[sBufferSize] ;
for (int i = 0 ; i < sBufferSize ; i++)
{
sTextureBuffer[ i ] = Mathf.Sin(i/ran + 20*Mathf.Sin(i/1000) ) ;
}
ReleaseBuffers();
print(" sin " + sTextureBuffer[23]);
wavBuffer = new ComputeBuffer(sBufferSize, sizeof(float) ) ;
wavBuffer.SetData(sTextureBuffer);
ComputeShader.SetBuffer(csi, "re", wavBuffer) ;
//wavBuffer.Release() ;
/////////////////////
ComputeShader.Dispatch(csi, 1, 1, 1);
computeBuffer.GetData (TextureBuffer);
computeBuffer.Release();
for (int i=0; i<BufferSize; i++)
{
ColorBuffer[i].r = TextureBuffer[i].x;
ColorBuffer[i].g = TextureBuffer[i].y;
ColorBuffer[i].b = TextureBuffer[i].z;
ColorBuffer[i].a = TextureBuffer[i].w;
}
ComputeTexture.SetPixels(ColorBuffer);
ComputeTexture.Apply();
}
}
public void ReleaseBuffers() {
if (wavBuffer != null) wavBuffer.Release();
wavBuffer = null;
}
}
あなたがマークした行があなたが得るエラーを引き起こす可能性は非常に低いです。そのような質問のコードを提供する際の[MCVE]ガイダンスを必ずお読みください。きれいなビルド*はもっと妥当なエラーを生成するかもしれません。 –
こんにちは、私はそれを完全に投稿しました。エラーは44行目に書かれています。関数引数を追加するための2つの行の変更だけがエラーを生成することを確認するために、さまざまなシナリオチェックを行いました。私が統一をリロードしたとき、「ウィンドウのレイアウトを再ロードするのに失敗しました。あなたはdefaut/tallを選択しますか?」という奇妙なエラーです。 –