将Texture2d对象发送到函数

时间:2012-08-05 17:49:22

标签: c# function xna-4.0 texture2d

我尝试将一些对象发送到一个函数,但似乎C#不喜欢这样。这是代码。

string[] bkgrSource = new string[12];
Texture2D[] bkgrBANK = new Texture2D[12];

其中bkgrSource[0]是一个文件名数组,bkgrBANK[0]是一个Texture2D数组。

此功能无效。 bkgrBANK[0]将保持为空。有什么帮助吗?

commonImageLoader( bkgrSource[0], bkgrBANK[0] ); 

private void commonImageLoader(string source, Texture2D destination ) {
    if ( !string.IsNullOrEmpty( source ) ) {
        fileName = source;
        using ( fileStream = new FileStream( @fileName, FileMode.Open ) ) {
        destination = Texture2D.FromStream( GraphicsDevice, fileStream );
        }
    }
}

1 个答案:

答案 0 :(得分:1)

我不是C#guru,但我认为关键是你要按值传递参数(默认方法调用行为), 因此,函数中的源和目标参数是原始参数的副本。

我认为您可以传递参数by reference来解决此问题。 可能这应该有效:

commonImageLoader( ref bkgrSource[0], ref bkgrBANK[0] ); 

private void commonImageLoader(ref string source, ref Texture2D destination ) {
    if ( !string.IsNullOrEmpty( source ) ) {
        fileName = source;
        using ( fileStream = new FileStream( @fileName, FileMode.Open ) ) {
        destination = Texture2D.FromStream( GraphicsDevice, fileStream );
        }
    }
}